לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 12-10-2017, 13:56
  beky4 beky4 אינו מחובר  
 
חבר מתאריך: 03.03.08
הודעות: 8
SELF JOIN USING 2 CONDITIONS - שאלה

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

מצרפת את השאלה ואת הפתרון:
http://sqlzoo.net/wiki/Self_join - שאלה 5.

קוד הפתרון:
הפתרון: SELECT a.company, a.num, a.stop, b.stop
FROM route a JOIN route b ON
(a.company=b.company and a.num=b.num)
WHERE a.stop=53 and b.stop=149

תוצאות הקוד:
company num stop stop
LRT 4 53 149
LRT 45 53 149

במידה ואני מסירה את השדה המשותף השני אני מקבלת את התוצאה הבאה:
company num stop stop
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 13-10-2017, 13:36
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 6 שנכתבה על ידי DeepSpace שמתחילה ב "א. זה הלינק הנכון:..."

2. בדיוק בצורה ששאלה הגברת...
קוד:
SELECT mov_title,rev_id FROM movie LEFT JOIN rating ON movie.mov_id = rating.mov_id WHERE rev_id IS NULL


(כן, אני מניח שקיים review id לכל שורה כי כך מופיע בדוגמה. הטור נראה כמו מפתח ראשי אז על פניו הוא not null בתוך טבלת הדירוגים. כיוון שאין לי את פרטי יצירת הטבלה אני יכול רק לנחש בהתבסס על הנתונים המוצגים בדוגמה)

יש לשים לב שאני רק מראה איך אפשרי - אני בכלל לא נכנס פה לעניין איזו שאילתא יעילה יותר, כיוון שחסרים פה נתונים נוספים כמו אינדקסים וכו', ואפילו מה זהות מסד הנתונים (יש כאלה שעושים דברים ממש טפשיים בתת-שאילתות, שזה לא יאמן...)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 15-10-2017, 07:44
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 8 שנכתבה על ידי DeepSpace שמתחילה ב "כן, אחרי שהגבתי חשבתי על..."

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

אף אחד לא מנע ממך להגיב שוב ולהוסיף...
ציטוט:
במקור נכתב על ידי DeepSpace
יותר טיפשיים מלעשות join ולקחת את כל השורות שלא נמצאות בו (שוב, אם זה בכלל אפשרי כפי שציינת)?

ובכן, את השאילתא שכתבתי כאן, הרצתי, לפני שכתבתי כאן, באתר שממנו נלקחה השאלה, והתוצאה הייתה זהה, אז אפשרי זה כן.

לגבי היותר טפשי - אני חזיתי במו עיני ב MySQL מריץ תת שאילתא שוב ושוב עבור כל שורה בטבלה המקורית כדי לבדוק האם ערך נמצא בתוכה בשימוש בפסוקית IN. כלומר אתה עושה WHERE על טבלה שגודלה נניח 10,000 שורות שמהם אתה מסנן תוצאות מסויימות לפי תת השאילתא, ותת השאילתא, שמחזירה בסה"כ id-ים, רצה... 10,000 פעם (שבכולן היא מחזירה כמובן את אותה תשובה עם אותו סט של id-ים). הביצועים... "בשמיים". זה נגמר בפתרון מגוחך של הרצת תת השאילתא מהאפליקציה, שמירת התוצאה, ובניית SQL בלי תת שאילתא עם הכנסה סטטית של ה-id-ים ל IN().

למעשה, נדמה שהשאלה נשואת האשכול שלנו מתאימה לקריטריון הזה ובהחלט ייתכן שתת השאילתא תרוץ כמספר השורות שיש בטבלת movies. ייתכן שה JOIN מהיר יותר (שהרי כך כל הרשומות מטבלת rating תיקראנה רק פעם אחת - אני כמובן מניח שיש אינדקס על mov_id)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 00:35

הדף נוצר ב 0.06 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר