06-06-2007, 13:10
|
|
|
חבר מתאריך: 17.05.05
הודעות: 7,321
|
|
להגיד לך את האמת גם אני ממש התקשתי בהתחלה ליצור את השאילתה.
אחרי כמה זמן חשבתי לעצמי שאתחיל מהדרך הקלה לקשה, כלומר שאנסה למצוא את ה-2 הערכים הגבוהים ביותר של Number עבור Name ספציפי.
לדוגמא Name='David', מכאן השאילתה היא:
קוד:
SELECT Name, Number FROM table
WHERE Name='David'
ORDER BY Number DESC LIMIT 2
דרך אגב לטבלה שלנו table יש את הטורים:
ID,
Name,
Number
כשה-Name הוא לדוגמא דוד (או David), ה-Number הוא 2 הערכים המקסימליים שאתה מחפש לכל משתמש, וה-ID זה ID ספציפי שיש לכל רשומה בטבלה.
עכשיו אנחנו יודעים איך עושים את השאילתה הבסיסית.
מה שאנחנו צריכים עכשיו זה להחליף את המחרוזת David שבפיסקת ה-WHERE, בשאילתה מסויימת שתיבחר עבורנו את כל השמות הקיימים.
השאילתה שבוחרת היא:
קוד:
SELECT Name FROM table GROUP BY Name
[ הסבר על פיסקת GROUP BY - לחץ כאן ]
ועכשיו מאחדים את שתי השאילתות:
קוד:
SELECT Name, Number FROM table
WHERE Name=(SELECT t2.Name FROM table t2 GROUP BY t2.Name)
ORDER BY Number DESC LIMIT 2
וזהו
בבקשה תודיע לי אם יצא לך טוב
|