הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   קישור בין טבלאות במסד SQL (https://hosts.co.il/forums/showthread.php?t=75550)

Cyeo 14-06-09 16:47

קישור בין טבלאות במסד SQL
 
היי,
נניח שיש לי 2 טבלאות כרגע.
אחת בנויה ככה:
איידי, שם משתמש, בעלים.

השניה בנויה ככה:
איידי, שם משתמש, מספר כלשהו.


האיידי לא חופפים בשתי הטבלאות.
בעלים - זה STRING כלשהו.

מה שאני רוצה לעשות:
לקחת את כל השמות משתמשים שיש להם את אותם הבעלים מהטבלה הראשונה,
ולחבר את כל המספרים שלהם מהטבלה השניה.

לדוגמא:
טבלה א':
1, אמיר, אלון
2, סתיו, חיים
3, מוחמד, אלון
4, אסף, חיים


טבלה 2:
5, אמיר, 50
19, סתיו, 20
12, מוחמד, 16
55, אסף, 80


אני רוצה לקחת את אמיר ומוחמד (שלשניהם אותם בעלים) ולחבר את המספרים שלהם, כדי שייצא 66.
או לקחת את סתיו ואסף שלשניהם אותם בעלים ולחבר את המספרים שלהם, כדי שייצא 100.



למישהו יש רעיונות איך לעשות כזה דבר?

hi_sorie 14-06-09 17:00

לשלוף את כל השדות מטבלה א

להכניס את זה למערך בצורה הבאה :

אלון -> אמיר, מוחמד.

חיים -> סתיו, אסף.

מפה לעשות foreach לכל מערך לפי key ו value

להריץ את כל הפריטים מהמערכים בטלבה מספר 2 במסד ולאגור נתונים עבודה כל רשומה במערך.

אם תרצה עזרה עם הקוד תפנה אלי...

Cyeo 14-06-09 17:04

ציטוט:

נכתב במקור על ידי hi_sorie (פרסם 721467)
לשלוף את כל השדות מטבלה א

להכניס את זה למערך בצורה הבאה :

אלון -> אמיר, מוחמד.

חיים -> סתיו, אסף.

מפה לעשות foreach לכל מערך לפי key ו value

להריץ את כל הפריטים מהמערכים בטלבה מספר 2 במסד ולאגור נתונים עבודה כל רשומה במערך.

אם תרצה עזרה עם הקוד תפנה אלי...


אוקי, נגיד ואני רוצה לשלוף את כל המשתמשים של אלון.

אז אני עושה:

קוד:

$sql = mysql_query("SELECT name FROM a WHERE owner='alon'");
עכשיו איך אני מפרק את זה למערך? mysql_fetch_array יעבוד פה? למרות שפה אני צריך את אותו הערך של כמה שורות, לא את כל הערכים של שורה 1 בטבלה.

hi_sorie 14-06-09 17:56

PHP קוד:

$sql mysql_query("SELECT * FROM a");
while( 
$row mysql_fetch_array($sql)){
$Owners[$row[owner]] = $row[name];


זה יתן לך מערך כזה :

אלון -> מוחמד, אבי שרון.
חיים -> סתיו, נתי, חי, אבדול.

מפה מה שנשאר לך לרוץ על כל מערך ולתת לו טוטאל לפי המשתמשים.


תאכלס למען היעילות קוד הייתי מציע לך לעשות את זה עם JOIN ולגמור הכל בשאילתא 1.

Daniel 14-06-09 18:04

שכחת לשלוף את owner בשאילתה,
ולא עושים $row[name], עושים $row['name'];

hi_sorie 14-06-09 18:10

ציטוט:

נכתב במקור על ידי MasterT (פרסם 721492)
שכחת לשלוף את owner בשאילתה,
ולא עושים $row[name], עושים $row['name'];


לגבי הראשון נכון ... העתקתי את השאילתא שלו פשוט ... צריך להוסיף * וזה ישלוף הכל.
לגבי השני אתה מוזמן לנסות, תראה שזה עובד.

Cyeo 14-06-09 18:51

תודה לשניכם בכל מקרה,
החלטתי שאין טעם להחזיק בשתי טבלאות שונות ואיחדתי את הטבלאות לטבלה אחת.
אחר כך עשיתי ככה בשביל לעשות מה שרציתי:

קוד:

$result = "select sum(count) as counter from table where bealim='admin' group by bealim";
$sql = mysql_query($result);
$res = mysql_fetch_array($sql);
echo $res['counter'];



כל הזמנים הם GMT +2. הזמן כעת הוא 18:44.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ