- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysql - record trovato piu volte
-
Ciao,
riapro questo post perchè ho una piccolissima variante da fare sulla soluzione dell'altra volta.Vorrei non più solo il più visto, ma "i più visti", esempio i 5 più visti di questa settimana
Ho subito pensato bastasse cambiare il limit a questa query e fare un while..
SELECT * FROM tabella GROUP BY id HAVING count(id) = (SELECT count(id) AS n_trovati FROM tabella GROUP BY id ORDER BY n_trovati DESC LIMIT 1)Ma a mysql non piace... dice...
#1242 - Subquery returns more than 1 rowCome ne esco??
Si può fare con questo tipo di query?Ciao
Grazie
-
Togli il group by dalla subquery e funziona, anche perchè non credo proprio che ti serva visto che usa l'id.
-
Non mostra piu nulla senza group
$query_piu_visti = "SELECT * FROM ".$prefix."piu_visti_sett GROUP BY id_news HAVING count(id_news) = (SELECT count(id_news) AS n_trovati FROM ".$prefix."piu_visti_sett ORDER BY n_trovati DESC LIMIT 5)";
//echo $query_piu_visti;
$piu_visti_query = mysql_query($query_piu_visti, $db);
while($row_piu_visti = mysql_fetch_array($piu_visti_query)){
-
Ma a cosa ti serve la subquery in questo caso? Perchè non ordini usando il count e applichi un limit?
-
Fondamentalmente perche ora non so come toglierla...
Cioè dopo having uguale cosa metto?
SELECT * FROM ".$prefix."piu_visti_sett GROUP BY id_news HAVING count(id_news) =..........
-
Puoi postare la struttura di piu_visti_sett?
-
Fatta cosi semplice semplice
CREATE TABLE IF NOT EXISTSstreaming_up_tv_piu_visti_sett
(
id_news
int(11) NOT NULL,
titolo
varchar(255) NOT NULL,
img
varchar(255) NOT NULL,
data_ins
varchar(255) NOT NULL,
KEYid_news
(id_news
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;Poi sulla pagina di output del singolo post inserisco e cancello i più vecchi di una settimana
-
E' davvero cosi un casino???
Di solito rispondi molto veloce...
-
Ho provato cosi
SELECT count(id_news) AS n_trovati, id_news, titolo, img FROM ".$prefix."piu_visti_sett GROUP BY id_news ORDER BY n_trovati DESC LIMIT 5Cioè togliendo la parte a sinistra di having ed effettivamente ne mostra 5 e non sembra lamentarsi più di tanto...
Ho però qualche dubbio sull'ordinamento, cioè sul fatto che siano effettivamente i 5 più visitati... Secondo voi??? Saranno giusti con la query scritta cosi?
-
Ciao,
vorrei riaprire questa discussione perche ho un altra query un pò diversa da quelle che si usano di solito. E mi sembra cosa carina dare in un solo posto diverse risposte a problemi particolari...Ho un db con questa struttura
id_campagna
clicks_rimanenti
clicks_consumatiVorrei estrarre dal database l'id di una campagna che non ha ancora esaurito i clicks.
Si potrebbe fare in phpcon diverse query, ma sono sicuro (anche se non l'ho mai usato) che esiste un modo per farlo usando la clausola where di mysql.Qualcosa tipo
SELECT * FROM campagne WHERE clicks < clicks_consumatidove click e clicks_consumati sono 2 campi mysql e non variabili php ( forse funziona già cosi come l'ho scritta)
Secondo voi funziona? Altrimenti come si scrive?