הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה בקשר ל- GROUP BY (https://hosts.co.il/forums/showthread.php?t=50337)

syn 21-07-07 19:56

שאלה בקשר ל- GROUP BY
 
יש לי מערכת חיפוש, כל פעם כשמישהו מבצע חיפוש, מילת החיפוש נכנסת למסד.
השתמשתי ב GROUP כדי להוציא אותן ולספור כמה יש מכל אחד.

PHP קוד:

$result mysql_query('SELECT q FROM search GROUP BY q LIMIT 10');

while(
$r=mysql_fetch_array($result)){
echo 
$r['q'] . " - ";
$squery $r['q'];

$howmuchtime mysql_query("SELECT * FROM search WHERE `q` LIKE '%$squery%'");
echo 
mysql_num_rows($howmuchtime). "<br>";



אני לא מצליח לעשות ORDER לפי הכמות, ז"א שמילת החיפוש הכי פופולארית תיהיה ראשונה וכך הלאה. מה אפשר לעשות?

4ior 21-07-07 20:04

PHP קוד:

$result mysql_query('SELECT q,COUNT(q) as numofresults FROM search GROUP BY q ORDER BY numofresults LIMIT 10');

while(
$r=mysql_fetch_array($result)){
echo 
$r['q'] . " - ".$r['numofresults'];


זה קוד הרבה יותר יעיל..וגם עושה את מה שאתה צריך..

Eran-s 21-07-07 20:10

אממ זו בעיה שגם אני נתקלתי בה,
GROUP BY מתבצע לפני המיון ולכן זו בעיה

syn 21-07-07 20:34

ציטוט:

נכתב במקור על ידי 4ior (פרסם 526624)
PHP קוד:

$result mysql_query('SELECT q,COUNT(q) as numofresults FROM search GROUP BY q ORDER BY numofresults LIMIT 10');

while(
$r=mysql_fetch_array($result)){
echo 
$r['q'] . " - ".$r['numofresults'];


זה קוד הרבה יותר יעיל..וגם עושה את מה שאתה צריך..

מה אני יעשה עם numofresults?
בשביל זה צריך טבלה חדשה שתעודכן לפי מילות החיפוש.

אני יצטרך לעדכן כל פעם את הטבלה עם ה- $howmuchtime ומילת החיפוש, ורק אז להדפיס את התוצאות לפי numofresults.

אני מחפש משהו פשוט יותר :(

4ior 21-07-07 21:49

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

syn 21-07-07 22:51

הבעיה שצריך לעשות עוד טבלה כדי לעשות לה ORDER BY numofresult.
אני מנסה למצוא דרך להסתדר בלי טבלה נוספת.

4ior 21-07-07 23:25

אתה לא צריך לעשות עוד טבלה:|

syn 21-07-07 23:32

ציטוט:

נכתב במקור על ידי 4ior (פרסם 526782)
אתה לא צריך לעשות עוד טבלה:|

אז מאיפה אני יוציא את ה numofresult?

Eran-s 21-07-07 23:58

ציטוט:

נכתב במקור על ידי syn (פרסם 526795)
אז מאיפה אני יוציא את ה numofresult?

זה רק כינוי לשדה שמכיל את ה-Count

syn 22-07-07 00:55

ציטוט:

נכתב במקור על ידי Eran-s (פרסם 526813)
זה רק כינוי לשדה שמכיל את ה-Count

ובשביל שהוא יכיל את ה count צריך לעשות טבלה חדשה ולתוכה להכניס את הנתונים, לא?


כל הזמנים הם GMT +2. הזמן כעת הוא 11:32.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ