
19-09-2008, 15:10
|
|
|
|
חבר מתאריך: 17.08.07
הודעות: 106
|
|
|
צריך עזרה מאנשים שמבינים ביעילות
mysql
יש לי טבלה
עם כל מיני תאים בה
חלק מהם זהgender id sum url picid
id משותף עם הid בטבלת יוזר(שלא פירטתי מה היא כוללת כי זה לא חשוב)
שימו לב אבל שבטבלה הזאת אותו id יכול להופיע מספר פעמים וpicid זה אינדקס, לעומת טבלת יוזר ששם הוא מפתח ראשי
מה שאני צריך זה ככה
לדוגמא יש לי טבלה
id1 w sum2
id2 w sum4
id1 w sum3
id3 m sum10
מה שאני צריך שזה יגריל לי ברנדומליות מה שgender=w ושהsum הוא הכי גבוהה מאותו אידי
לדוגמא עכשיו הורגל id1 אז שיבחר id1 w sum3
מקווה שזה מובן
עכשיו מה עדיף לעשות 2 שאילתות
באחד אני בוחר id רנדומלי
ובשאילתה הבא בוחר את התמונה עם אותו id וsum הכי גבוהה
או שימוש בגרופ וhavind שזה יראה משהו כזה
[
קוד:
SELECT url,id,picid FROM pic where gender='w' GROUP BY (id) HAVING max(sum) ORDER BY RAND() LIMIT 1
למי שלא הבין למה הדילמה
מצד אחד תמיד אומרים לעשות שאילתה חכמה וכל זה כל בדוגמא שהבאתי
מצד שני נשמע לי שכל הקטע של הgroup by והhaving
לוקח בהרבה יותר משאבים מפשוט לשלוח שאילתה נוספת.(השתמשתי בהם כי לפי מה שאני יודע זאת הדרך היחידה לעשות את מה שעשיתי בשאילתה אחת.
נערך לאחרונה ע"י boynett בתאריך 19-09-2008 בשעה 15:21.
|