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

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



  #2  
ישן 17-09-2007, 17:58
  משתמש זכר Spaceboy Spaceboy אינו מחובר  
אדמין לשעבר
 
חבר מתאריך: 26.10.01
הודעות: 8,789
זה די פשוט...
בתגובה להודעה מספר 1 שנכתבה על ידי borsood שמתחילה ב "אופטימיזציה של שאילתא"

אם אתה רוצה להציג קורסים בלי תלמידים תשלוף כאלה ש NO EXISTS רשומה בטבלת הרישום.
אם אתה רוצה רק כאלה שיש בהם תלמידים אבל את המספר המינימלי אז תעשה JOIN פשוט (INNER) בין טבלת הקורסים לטבלת הרישום (אין שום סיבה לצרף את טבלת הסטודנטים) עם COUNT ותציג רק את N הרשומות הראשונות כאשר זה ממוין לפי ה COUNT.
אם אתה רוצה גם וגם (כלומר מבין כל הקורסים) תעשה אותו דבר רק עם Courses LEFT OUTER JOIN Attending (שזה אתה יכול לעשות גם עבור שתי האפשרויות הראשונות רק להוסיף HAVING מתאים).

טבלת הסטודנטים מיותרת כך או כך מכיוון שיש לך student_id בטבלת הרישום.
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.varon.co.il/signature.asp?type=.jpg]
"The reasonable man adapts himself to the world,
The unreasonable one persists in trying to adapt the world to himself,
Therefore all progress depends on the unreasonable man" --- George Bernard Shaw

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 18-09-2007, 17:19
  משתמש זכר Spaceboy Spaceboy אינו מחובר  
אדמין לשעבר
 
חבר מתאריך: 26.10.01
הודעות: 8,789
COUNT סופר את מספר הרשומות שבשאילתה
בתגובה להודעה מספר 3 שנכתבה על ידי borsood שמתחילה ב "תודה אבל זה לא עובד :( שדה..."

ברמת שאר השדות... זה נכון אם זה טבלה אחת או עשר... אם JOIN שלך יבצע מכפלה קרטזית שתיתן תוצאה של 50 רשומות לא יעזור לך שבטבלה אחת היה 5 ובשניה 10.
רק ב Attending יש לך את הנתון של מספר הנרשמים לקורס... לא בשום מקום אחר (אלא אם תוסיף את זה בטבלת קורסים מה שייצור כפילות ו Overhead של ניהול).

תכתוב פה את השאילתה שלא עובדת וננסה לעזור.
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.varon.co.il/signature.asp?type=.jpg]
"The reasonable man adapts himself to the world,
The unreasonable one persists in trying to adapt the world to himself,
Therefore all progress depends on the unreasonable man" --- George Bernard Shaw

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 20-09-2007, 16:33
  borsood borsood אינו מחובר  
 
חבר מתאריך: 26.04.04
הודעות: 2,314
בתגובה להודעה מספר 4 שנכתבה על ידי Spaceboy שמתחילה ב "COUNT סופר את מספר הרשומות שבשאילתה"

השאילתא המקורית מוציאה את הפלט הזה
קוד:
+-----------+--------------------+-----+ | id | name | cnt | +-----------+--------------------+-----+ | 125 | example3 | 99 | | 117 | example2 | 101 | +-----------+--------------------+-----+
אבל השאילתא הזו
קוד:
select course.id, course.name, count(attending.student_id) as cnt from courses left outer join attending on course.id = attending.course_id group by course.id order by cnt limit 2
מוציאה את הפלט הזה:
קוד:
+-----------+--------------------+-------+ | id | name | cnt | +-----------+--------------------+-------+ | 125 | example3 | 7584 | | 117 | example2 | 66933 | +-----------+--------------------+-------+
מה שהפתיע אותי זו שהשאילתא הזו
קוד:
select course.id, course.name, count(distinct attending.student_id) as cnt from courses left outer join attending on course.id = attending.course_id group by course.id order by cnt limit 2

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

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

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

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

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



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

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

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

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