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

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

L[s]D 29-01-09 08:30

שאלה| על INNER JOIN בSQL
 
היי, רציתי לשאול מה ההבדל בין זה:
קוד:

SELECT messages.body, users.username
FROM messages, users
WHERE messages.poster = users.id

לבין
קוד:

SELECT messages.body, users.username
FROM messages INNER JOIN users
ON messages.poster = users.id

לא רק מבחינת הפלט, אלא גם מבחינת יעילות תקינות וכו'..
תודה (:

vadimg88 29-01-09 08:37

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

ה JOIN נועד למטרה של קבלת נתונים משני טבלאות או יותר שמכילות רשומות שנמצאות בכל הטבלאות שמבצעים עליהם את ה JOIN . עכשיו בדוגמא שהבאת צריך להשתמש ב LEFT JOIN ולא ב INNER. הסיבה היא ש INNER JOIN נועד לאחד את התוצאות של טבלה אחת לעצמה זאת אומרת מטבלה לדוגמא TEST לאותה טבלה (TEST) במקרה שלך אתה רוצה לקחת נתונים מטבלה אחת על פי רשומה מסויימת ולהוציא את נתונים נוספים מטבלה אחרת לפי אותה רשומה מהטבלה הראשונה את זה אפשר לעשות עם LEFT או RIGHT JOIN . ההבדל ביניהם הוא ש LEFT JOIN לוקח את הטבלה השנייה בתור הטבלה ה"מתאחדת" ו RIGHT JOIN לוקח את הטבלה השנייה בתור הטבלה "המאחדת" .

יותר ברור מזה יהיה קשה להסביר בעברית. חיפוש קצר ברשת לגבי JOIN תתן הרבה תוצאות ומידע.

fulsyp 30-01-09 12:40

הסיבה שמשתמשים בעיקר ב-JOIN היא שזה שיפור של גירסא ב-sql היה את גירסא 1 שבה לא היה קיים ה-JOIN ולכן השתמשו בשיטה הראשונה שהראית אבל שהוסיפו את ה-JOIN עברו כי זה יותר יעיל מבחינת הוצאת הנתונים(זה הוראה בשינויים של הגירסא)

dabi 30-01-09 12:41

אפשר לראות הסבר של JOIN לMYSQL? בPHP
תודה


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

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