לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ברוכים הבאים לפורום ASP חץ ימינה  

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



  #11  
ישן 20-12-2004, 17:21
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
זה תלוי
בתגובה להודעה מספר 10 שנכתבה על ידי sprk78 שמתחילה ב "אז מה לעשות???"

מה אתה מצפה שהדטהבייס יעשה ?

SELECT cdate,subject,test_num from questions_answers where username="something" group by test_num;

אתה אמרת לו לקבץ נתונים לפי הערך שבעמודה test_num, אבל איך הוא אמור לקבץ את הערך cdate למשל?

אם היית מבקש איזושהי פונקציה מקבצת על הערכים לא היית צריך להוסיף אותם ל group by
למשל:

select count( subject ),test_num from questions_answers where username="something" group by test_num;

יתן לך את מספר הנושאים לכל test_num

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


נערך לאחרונה ע"י המממ בתאריך 20-12-2004 בשעה 17:29. סיבה: 42
חזרה לפורום
  #15  
ישן 20-12-2004, 21:48
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
מה זה קיבוץ בסיסי ?
בתגובה להודעה מספר 14 שנכתבה על ידי שימי שמתחילה ב "מה הבעייה בלבקש קיבוץ על פי שדה אחד?"

איך אמורה להראות התוצאה ?

אני מתעסק קצת עם אורקל, וזה מה שקיבלתי כשניסיתי לקבץ לפי עמודה אחת מתוך שלוש:
קוד:
SQL> select EMPNO,ENAME,SAL from emp group by SAL; select EMPNO,ENAME,SAL from emp group by SAL * ERROR at line 1: ORA-00979: not a GROUP BY expression


לצורך עניין הטבלה שלי מכילה את הערכים הרגילים בדוגמא של אורקל:
קוד:
EMPNO ENAME SAL ---------- ---------- ---------- 7369 SMITH 800 7499 ALLEN 1600 7521 WARD 1250 7566 JONES 2975 7654 MARTIN 1250 7698 BLAKE 2850 7782 CLARK 2450 7788 SCOTT 3000 7839 KING 5000 7844 TURNER 1500 7876 ADAMS 1100 7900 JAMES 950 7902 FORD 3000 7934 MILLER 1300


תסביר לי בבקשה איך רצית שאורקל יציג את הנתונים ?
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה


נערך לאחרונה ע"י המממ בתאריך 20-12-2004 בשעה 21:50.
חזרה לפורום
  #16  
ישן 21-12-2004, 05:45
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
כנראה ששוב MySQL "הפשוט" מראה עליונות על ה DBים "הגדולים ממנו"...
בתגובה להודעה מספר 15 שנכתבה על ידי המממ שמתחילה ב "מה זה קיבוץ בסיסי ?"

בבקשה, אסביר....

GROUP BY, תפקידו (למיטב הבנתי), לקבץ ערך בודד (אחד...) עבור כל סט רשומות שאותו שדה מכיל 1 או יותר ערכים כמוהו, ואותו לפלוט החוצה לשואל השאילתא. כך למשל ניתן לאחד את כל סכומי המשכורות בשנה, של כל עובד, בהנתן טבלה שמכילה את המשכורות שקיבל כל עובד בחברה, עם שדה שבו כתובת השנה - עושים GROUP BY year. כיוון שאנחנו רוצים לקבץ אך ורק על פי שנה (ולא למשל לקבץ גם את העובדים - אנחנו כן רוצים רשימה של כל עובד וכמה הוא קיבל במהלך השנה, ולא סיכום של כל המשכורות של כל העובדים) - אז נעשה רק GROUP BY year.

אקח דוגמא מהפורום שאתה קורא עכשיו, נניח שאני רוצה לקבל רק את האנשים הראשונים שחברים בכל אחת מהקבוצות הקיימות במערכת, אזי אעשה כך:
קוד:
mysql> select usergroupid,userid from forum_user group by usergroupid; +-------------+--------+ | usergroupid | userid | +-------------+--------+ | 2 | B | | 3 | C | | 6 | D | | 7 | E | | 8 | F | +-------------+--------+ 5 rows in set (0.69 sec)

(הערה: התא userid שונה לאותיות כדי לא לחשוף מידע. כל תא הכיל מספר אחר של משתמש כלשהוא, ששייך לקבוצה שכתובה איתו באותה השורה)

מקווה שזה יותר מובן...
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

חזרה לפורום
  #17  
ישן 21-12-2004, 10:21
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
אולי אני מתחיל להבין...
בתגובה להודעה מספר 16 שנכתבה על ידי שימי שמתחילה ב "כנראה ששוב MySQL "הפשוט" מראה עליונות על ה DBים "הגדולים ממנו"..."

ציטוט:
במקור נכתב על ידי שימי
בבקשה, אסביר....

GROUP BY, תפקידו (למיטב הבנתי), לקבץ ערך בודד (אחד...) עבור כל סט רשומות שאותו שדה מכיל 1 או יותר ערכים כמוהו, ואותו לפלוט החוצה לשואל השאילתא. כך למשל ניתן לאחד את כל סכומי המשכורות בשנה, של כל עובד, בהנתן טבלה שמכילה את המשכורות שקיבל כל עובד בחברה, עם שדה שבו כתובת השנה - עושים GROUP BY year. כיוון שאנחנו רוצים לקבץ אך ורק על פי שנה (ולא למשל לקבץ גם את העובדים - אנחנו כן רוצים רשימה של כל עובד וכמה הוא קיבל במהלך השנה, ולא סיכום של כל המשכורות של כל העובדים) - אז נעשה רק GROUP BY year.


זה מעניין מה שאתה אומר...
בעצם אתה מבקש מ MySQL לקבץ והוא יעשה "משהו" עם הנתונים.
אתה נתת שתי אפשרויות:
"לאחד את כל סכומי המשכורות בשנה" (פונקצית סכום עבור כל עובד)
או לחילופין
"לקבל רק את האנשים הראשונים שחברים בכל אחת מהקבוצות" (פונקצית בחירה לפי מספר רשומות)

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

באורקל למשל, את שתי האפשרוית הייתי מיישם ככה:
קוד:
SQL> select JOB,sum(SAL) from EMP group by JOB; JOB SUM(SAL) --------- ---------- ANALYST 6000 CLERK 4150 MANAGER 8275 PRESIDENT 5000 SALESMAN 5600


האפשרות השניה קצת יותר מסובכת באורקל, צריך להגיד לו איך לבחור את "הערך הראשון"

למשל לפי מספר העובד הנמוך ביותר לכל מקצוע:
קוד:
SQL> select JOB,min(EMPNO) from EMP group by JOB; JOB MIN(EMPNO) --------- ---------- ANALYST 7788 CLERK 7369 MANAGER 7566 PRESIDENT 7839 SALESMAN 7499


שים לב שלצורך הדוגמאות השתמשתי באותה טבלת EMP מהדוגמא של אורקל (יש בה עוד כמה עמודות שלא הצגתי קודם)

לצורך העניין הנה העמודות הרלוונטיות:
קוד:
SQL> select EMPNO,ENAME,JOB,SAL from EMP; EMPNO ENAME JOB SAL ---------- ---------- --------- ---------- 7369 SMITH CLERK 800 7499 ALLEN SALESMAN 1600 7521 WARD SALESMAN 1250 7566 JONES MANAGER 2975 7654 MARTIN SALESMAN 1250 7698 BLAKE MANAGER 2850 7782 CLARK MANAGER 2450 7788 SCOTT ANALYST 3000 7839 KING PRESIDENT 5000 7844 TURNER SALESMAN 1500 7876 ADAMS CLERK 1100 7900 JAMES CLERK 950 7902 FORD ANALYST 3000 7934 MILLER CLERK 1300


כנראה שההתנהגות הזו, שלא מנסה לנחש איזו פונקציה אתה מעוניין להפעיל על הערך המקובץ, משותפת לעוד כמה מסדי נתונים.
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה

חזרה לפורום

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

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

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

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



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

הדף נוצר ב 0.07 שניות עם 10 שאילתות

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

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