Am o baza de date voturi cu urmatoarele coloane:
id, user, item, data
userul este userul care a votat si item este itemul pe care la votat.
data este data la care s-a votat
Vreau sa fac un select cu cel mai votat item de astazi.
Multumesc mult.
Select Top voturi de azi
-
- Mesaje:168
Select Top voturi de azi
MarPlo
Mesaje:4343
Daca coloana "data" e de tip DATE sau DATETIME, incearca acest Select:
Sau:
Cod: Selectaţi tot
SELECT item, COUNT(item) AS nrvoturi FROM tabel WHERE DATE(data) = DATE(NOW()) GROUP BY item ORDER BY nrvoturi DESC
Cod: Selectaţi tot
SELECT item, COUNT(item) AS nrvoturi FROM tabel WHERE DATE(data) >= CURDATE() GROUP BY item ORDER BY nrvoturi DESC
evident
Mesaje:168
Nu imi mere asa cum trebuie acest script.
De exemplu eu am in tabelul voturi asa:
Vreau sa afisez ce-a mai votata poza.
In cazul meu sa afiseze "poza".
Multumesc
De exemplu eu am in tabelul voturi asa:
Cod: Selectaţi tot
id user item data
1 user1 poza 2014-07-12
2 user2 poza2 2014-07-12
3 user3 poza 2014-07-12
4 user4 poza 2014-07-12
5 user5 poza3 2014-07-12
6 user6 poza2 2014-07-12
In cazul meu sa afiseze "poza".
Multumesc
MarPlo
Mesaje:4343
Codul functioneaza, doar ca daca vrei sa returneze un singur rand, cu cea mai votata poza, trebuie adaugat: " LIMIT 1". Pentru cele mai votate 2 poze, se pune " LIMIT 2".
Cod: Selectaţi tot
SELECT item, COUNT(item) AS nrvoturi FROM tabel WHERE DATE(data) = DATE(NOW()) GROUP BY item ORDER BY nrvoturi DESC LIMIT 1
evident
Mesaje:168
Merge bine, am faut asa:
Mai am o intrebare aici daca se poate ca atunci cand gaseste 2 iteme care au acelasi nr de voruri sa afiseze doar unul.
Scriptul afiseaza doar unul dar cand dau refresh la pagina il afiseaza pe celalalt item care are acelasi nr de voturi.
Multumesc mult
Cod: Selectaţi tot
<?php
$sql_voturi = "SELECT item, COUNT(item) AS nrvoturi FROM voturi WHERE DATE(data) = DATE(NOW()) GROUP BY item ORDER BY nrvoturi DESC LIMIT 1";
$query = mysqli_query($db_conx, $sql_voturi);
while($row = mysqli_fetch_array($query)) {
$nr= $row['nrvoturi'];
}
echo $nr;
?>
Scriptul afiseaza doar unul dar cand dau refresh la pagina il afiseaza pe celalalt item care are acelasi nr de voturi.
Multumesc mult
MarPlo
Mesaje:4343
Ca sa returneze mereu acelasi item cu numar egal de voturi, adauga si "item" la ORDER BY :
Cod: Selectaţi tot
SELECT item, COUNT(item) AS nrvoturi FROM tabel WHERE DATE(data) = DATE(NOW()) GROUP BY item ORDER BY nrvoturi DESC, item DESC LIMIT 1
Subiecte similare
- Setare valori din array in select tag
JavaScript - jQuery - Ajax Primul mesaj
Salut am un array cu orele de functionareUltimul mesaj
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...