ABA


"חידה בSQL"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #13138 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13138
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   15:53   27.10.07   
אל הפורום  
  חידה בSQL  
 
   תרשמו כאן את המשפט SQL לדרישה הבאה:
יש לכם טבלת כתבות שמכילה
cat_id
cat_name
cat_text
ויש לכם טבלת תגובות
comment_id
comment_cat_id
comment_text

כתבו שאילתא ששולפת את 10 הכתבות שיש להם הכי הרבה תגובות.

אני הצלחתי לפתור את זה בצורה אלגנטית ויפה , אבל לפתרון שלי יש חסרון שהוא דורש MYSQL מגירסא 4.1 וצפונה.

מעניין אותי הרעיונות שלכם.
בהצלחה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  עלו לי כמה רעיונות akoka 27.10.07 18:14 1
  לא יעבוד אתה לא יכול לעשות ORDER BY על פונקציה bmaorlo  27.10.07 23:19 2
     וואלה חח לאדע אף פעם לא ניסיתי :X אמממ akoka 27.10.07 23:21 3
         חכה נתן לעוד כמה מומחים לנסות אני אביא שיתייאשו אנשים bmaorlo  27.10.07 23:27 4
  אף אחד מהתותחים לא חושב לנסות ? bmaorlo  28.10.07 23:10 5
     אוליי תפרסם את הפתרון:| או אפילו אם akoka 29.10.07 00:18 6
         TEMP TABLES bmaorlo  29.10.07 00:31 7
             מחזק.. כאשר רוצים להשתמש במקס או מינ lior066 29.10.07 02:18 8
                 איפה היית שפירסמתי את החידה ? :) bmaorlo  29.10.07 11:40 9
                     בעבודה חחחח... חייבים להכניס קצת כסף הבייתה.. lior066 29.10.07 16:25 12
             אשמח אם תסביר:) akoka 29.10.07 20:01 14
  אני הצלחתי להוציא רק את ה-ID של הכתבות הדרושות... MeToR 29.10.07 13:30 10
     השאילתא שלך לא נכונה bmaorlo  29.10.07 13:44 11
         אוקיי צודק, פשוט שמתי נתונים במסד אצלי... MeToR 29.10.07 19:29 13

       
akoka

   18:14   27.10.07   
אל הפורום  
  1. עלו לי כמה רעיונות  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 27.10.07 בשעה 18:15 בברכה, akoka
 
אחד מהם זה להשתמש בCREATE VIEW אבל כאן אני יזדקק ליותר משאילתא אחת אז חשבתי על משו כזה

לא בדקתי אבל זה עלול לעבוד


SELECT cat.*,comments.* FROM cat,comments WHERE comments.comment_cat_id=cats.cat_id ORDER BY count(comments.comment_id) limit 10


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   23:19   27.10.07   
אל הפורום  
  2. לא יעבוד אתה לא יכול לעשות ORDER BY על פונקציה  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   23:21   27.10.07   
אל הפורום  
  3. וואלה חח לאדע אף פעם לא ניסיתי :X אמממ  
בתגובה להודעה מספר 2
 
   אוקי התקלת אותי תראה לי את הפתרון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   23:27   27.10.07   
אל הפורום  
  4. חכה נתן לעוד כמה מומחים לנסות אני אביא שיתייאשו אנשים  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   23:10   28.10.07   
אל הפורום  
  5. אף אחד מהתותחים לא חושב לנסות ?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   00:18   29.10.07   
אל הפורום  
  6. אוליי תפרסם את הפתרון:| או אפילו אם  
בתגובה להודעה מספר 5
 
   אתה לא רוצה שהשאר ייראו תשלח לי בפרטי אני לא מבין מה הבעיה:|


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   00:31   29.10.07   
אל הפורום  
  7. TEMP TABLES  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 29.10.07 בשעה 00:31 בברכה, bmaorlo
 
למדתי את זה לא מזמן וואלה זה שימושי

select s.cat_name , s.cat_text,mytable.cat_id as id from
(SELECT comment_cat_id , count( comment_cat_id ) AS counter
FROM sites_comments
GROUP BY comment_cat_id
ORDER BY counter DESC limit 0,10 )
as mytable , articles s
where s.cat_id=mytable.cat_id

אם אתה לא מבין תגיד לי ואני אסביר לך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   02:18   29.10.07   
אל הפורום  
  8. מחזק.. כאשר רוצים להשתמש במקס או מינ  
בתגובה להודעה מספר 7
 
   או בכל דבר שצריך לבצע פעולה מתמטית או חישוב בנפרד , תמיד עם טבלה זמנית הכי יעיל מהיר והכי פחות זולל משאבים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   11:40   29.10.07   
אל הפורום  
  9. איפה היית שפירסמתי את החידה ? :)  
בתגובה להודעה מספר 8
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   16:25   29.10.07   
אל הפורום  
  12. בעבודה חחחח... חייבים להכניס קצת כסף הבייתה..  
בתגובה להודעה מספר 9
 
   הדרדרתי לזנות אני עובד ביס במקום לעבוד על פרוייקטים אין לי זמן בגלל הלימודים. :(


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   20:01   29.10.07   
אל הפורום  
  14. אשמח אם תסביר:)  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MeToR
חבר מתאריך 26.1.07
11 הודעות
   13:30   29.10.07   
אל הפורום  
  10. אני הצלחתי להוציא רק את ה-ID של הכתבות הדרושות...  
בתגובה להודעה מספר 0
 
  

SELECT DISTINCT count(*) AS commentsNum, cat_id
FROM articles, comments
WHERE articles.cat_id=comments.comment_cat_id
GROUP BY articles.cat_id;

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   13:44   29.10.07   
אל הפורום  
  11. השאילתא שלך לא נכונה  
בתגובה להודעה מספר 10
 
  

DISTINCT count(*)

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MeToR
חבר מתאריך 26.1.07
11 הודעות
   19:29   29.10.07   
אל הפורום  
  13. אוקיי צודק, פשוט שמתי נתונים במסד אצלי...  
בתגובה להודעה מספר 11
 
   ולא ניסיתי לשים את אותו מספר תגובות פעמיים, אז לא שמתי לב חח


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net