Autor | Zpráva | ||
---|---|---|---|
Milhauscorpse Profil * |
#1 · Zasláno: 27. 8. 2012, 18:23:56
Ahoj.Potřeboval bych poradit se SQL dotazem.Mám tabulku a v ní sloupce datum (např.20120827),id(např.1234567890)a ip.Potřeboval bych sečíst řádky se stejným id,a vypsat deset s nejvyšším počtem.Hledat jsem i googloval a nenašel nic co by mne nakoplo.Díky za radu.
M |
||
juriad Profil |
#2 · Zasláno: 27. 8. 2012, 19:41:18
SELECT id, COUNT(*) pocet FROM tabulka GROUP BY id ORDER BY 2 DESC LIMIT 10 tím sečíst myslíš "zjistit počet"? pokud opravdu chceš sčítat, tak použij agregační funkci SUM
|
||
Milhauscorpse Profil * |
#3 · Zasláno: 28. 8. 2012, 09:12:55
Zkouším to takhle:
$vysledek=mysql_query("SELECT id, COUNT(*) pocet FROM tyden-video GROUP BY id ORDER BY 2 DESC LIMIT 10"); while ($zaznam=MySQL_Fetch_Array($vysledek)) { Ale stále mi to píše chybu: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...
To sečíst by mělo být počet řádků. |
||
Tori Profil |
#4 · Zasláno: 28. 8. 2012, 09:18:45
Tak od oka tipuju, že tam vadí ta pomlčka v názvu tabulky:
SELECT ... FROM `tyden-video`
(koukněte do mysql manuálu, které identifikátory se dají psát bez uvození). Pokud to nebylo ono, pokračujte podle FAQ: Nejčastější potíže s PHP (FAQ) » Warning mysql_fetch_array() (nebo jiná MySQL funkce): supplied argument is not a valid MySQL result resource… |
||
panther Profil |
#5 · Zasláno: 28. 8. 2012, 09:32:46
Milhauscorpse:
... ORDER BY 2 order by ma nasledovat nazev sloupce v tabulce, nevim, co jsi zamyslel tou dvojkou.
Vypis si mysql_error, budes moudrejsi. |
||
Milhauscorpse Profil * |
#6 · Zasláno: 28. 8. 2012, 09:56:26 · Upravil/a: Milhauscorpse
Ten problém byl opravdu v pomlčce.(zjistil jsem to po vypsání mysgl_error.
Takže teď to mám takto: $vysledek=mysql_query("SELECT id, COUNT(*) pocet FROM tydenvideo GROUP BY id ORDER BY id DESC LIMIT 10")OR die(mysql_error()); while ($zaznam=MySQL_Fetch_Array($vysledek)) { $id=$zaznam["id"]; echo"$id<br>"; Vypíše mi to deset záznamů,ovšem nevím jak to seřadit,tedy ORDER BY ,aby když je ve sloupci id stejné číslo třeba pětkrát,aby mi to dalo na první místo,před ostatními ,kterých se tam vyskytuje míň.Jestli jsem to pochopil,tak ORDER BY pocet ?
|
||
Alphard Profil |
#7 · Zasláno: 28. 8. 2012, 10:00:37
panther:
„za order by ma nasledovat nazev sloupce v tabulce...“ nebo pořadí sloupce. V tom není chyba a řadilo by to správně. |
||
Tori Profil |
#8 · Zasláno: 28. 8. 2012, 10:01:56
Milhauscorpse:
Potřebujete to řadit podle výsledku fce COUNT. Můžete použít alias toho sloupce: SELECT id, COUNT(*) pocet ... ORDER by pocet , nebo jeho pořadí ORDER BY 2 .
|
||
panther Profil |
#9 · Zasláno: 28. 8. 2012, 10:03:12
Alphard:
„nebo pořadí sloupce.“ aha, to jsem nevedel. Dekuji za upresneni/opravu. |
||
Milhauscorpse Profil * |
#10 · Zasláno: 28. 8. 2012, 10:04:37
Tori:
Ano to bylo ono.Takže celé to mám takhle: $vysledek=mysql_query("SELECT id, COUNT(*) pocet FROM tydenvideo GROUP BY id ORDER BY pocet DESC LIMIT 10")OR die(mysql_error()); while ($zaznam=MySQL_Fetch_Array($vysledek)) { $id=$zaznam["id"]; echo"$id<br>"; A funguje to. Moc díky všem!!! |
||
Časová prodleva: 12 let
|
0