13-01-2006, 02:32
|
|
|
חבר מתאריך: 25.08.03
הודעות: 9,114
|
|
אני מסופק אם למדת כמו שצריך או אם אף בכלל נכנסת לדף בקישור שהבאתי בהודעתי הקודמת...
יתכן שלא הבנתי אותך טוב, אבל אם הבנתי טוב את צרכיך, זה הפתרון:
נניח שיש לנו את הטבלה אם הנתונים הבאים:
קוד:
+----+-------+---------+
| id | group | name |
+----+-------+---------+
| 1 | 1 | eran |
| 2 | 1 | dor |
| 3 | 1 | cha |
| 4 | 2 | dekel |
| 5 | 3 | yisrael |
| 6 | 2 | dori |
+----+-------+---------+
ואתה כפי שהסברת, רוצה לדעת כמה חברים יש בכל קבוצה, לכן אתה משתמש בפונקציה count המונה מספר שורות, ומבצעה הקבצה באמצעות GROUP BY על מס' הקבצוה, ולכן התוצאה תהיה כמה שורות יש בכל קבוצה, כי הפונקציה COUNT מופעלת בנפרד על כל קבוצה בלבד.
השאילתה:
קוד:
SELECT `group`, COUNT(id) as `count` FROM members GROUP BY `group`;
והתוצאה:
קוד:
+-------+-------+
| group | count |
+-------+-------+
| 1 | 3 |
| 2 | 2 |
| 3 | 1 |
+-------+-------+
הערה חשובה: תשים לב שלעיתים תחמתי את שם העמודה בתו ` (זה לא גרש רגיל, לא להתבלבל), ולעיתים לא תחמתי את שם העמודה.
הסיבה היא כי לא חובה לתחום עמודה עם התו המדובר, אך אם שם העמודה זהה ל"מילה שמורה" חובה לתחום את שם העמודה, אחרת המסד נתונים יזהה את זה כפקודה ובד"כ יודיע על שגיאה.
הפתרון האלגנטי הוא כלל לא ליצור עמודות, טבלאות או מסדי נתונים בשם של "מילה שמורה", אך אם בכל זאת תרצה, ניתן כמו בדוגמה הקודמת.
תשים לב שאחרי הפונקציה COUNT הוספתי את המילה as ואז שם כלשהוא, ולכן בתוצאות שם העמודה אינו "COUNT(id)" אלא השם שכתבתי לאחר המילה as (למיטב זכרוני לא חובה להוסיף את הפקודה as).
נערך לאחרונה ע"י ישראל K בתאריך 13-01-2006 בשעה 02:35.
|