Autor Zpráva
Milhauscorpse
Profil *
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
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 *
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
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
Milhauscorpse:
... ORDER BY 2
za order by ma nasledovat nazev sloupce v tabulce, nevim, co jsi zamyslel tou dvojkou.

Vypis si mysql_error, budes moudrejsi.
Milhauscorpse
Profil *
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
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
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
Alphard:
nebo pořadí sloupce.
aha, to jsem nevedel. Dekuji za upresneni/opravu.
Milhauscorpse
Profil *
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!!!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: