Utilizzare ordine da un altro clausola select
Domanda
Quindi quello che sto effettivamente cercando di realizzare è il filtro più votato su storie. Le storie vengono salvati in una tabella, e tutti i voti in un altro.
Ho questa dichiarazione per ottenere l'ordine delle colonne vid corretta:
SELECT vid, COUNT(id) AS votecnt
FROM votes
WHERE status = 1
GROUP BY vid
ORDER BY votecnt DESC
E poi devo filtrare le storie stesse, e voglio l'essere ordinato così come sono nel primo comma.
SELECT vid, body, timestamp
FROM stories
WHERE lv = 1
AND status = 1
La cosa è, è l'ordine che ho bisogno, perché la prima istruzione non restituisce tutte le righe che la seconda si fa. Sarebbe ancora meglio, se la prima query potrebbe ordinare la tabella in base allo stato = 1 conteggio in un primo momento, e poi voti totali.
Tutte le idee come partecipare tutto questo in una query SQL? O devo usare PHP in mezzo?
Soluzione
Se non mi grossolanamente equivoco la struttura, un semplice join dovrebbe funzionare bene:
SELECT stories.vid, body, timestamp, COUNT(votes.id) votecnt FROM stories
INNER JOIN votes ON stories.vid=votes.vid
WHERE stories.lv=1 AND stories.status=1
GROUP BY votes.vid
ORDER BY votecnt DESC
Non sono sicuro di cosa si intende per
Sarebbe ancora meglio, se la prima query potrebbe ordinare la tabella in base allo stato = 1 conteggio in un primo momento, e poi voti totali.
poiché la vostra dichiarazione in cui utilizza solo voto / storie che hanno status = 1.