Utilice orden de otro cláusula select
Pregunta
Así que lo que estoy realmente tratando de lograr es el filtro más votado en las historias. Las historias se guardan en una tabla, y todos los votos a otro.
Tengo esta declaración para obtener el orden de las columnas vid adecuado:
SELECT vid, COUNT(id) AS votecnt
FROM votes
WHERE status = 1
GROUP BY vid
ORDER BY votecnt DESC
Y entonces tengo que filtrar los cuentos mismos, y quiero que el proceso será condenada tal y como son en la cláusula primera.
SELECT vid, body, timestamp
FROM stories
WHERE lv = 1
AND status = 1
Lo que pasa es que es el orden que necesito, ya que la primera declaración no devuelve todas las filas que la segunda lo hace. Sería aún mejor, si la primera consulta sería ordenar la tabla por el estado = 1 cuenta en un primer momento, y luego el total de votos.
Alguna idea de cómo unirse a todo esto en una consulta SQL? O debería usar PHP en el medio?
Solución
A menos que esté extremadamente mala interpretación de su estructura, una combinación sencilla debería funcionar bien:
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
No estoy seguro de lo que entendemos por
Sería aún mejor, si la primera consulta sería ordenar la tabla por el estado = 1 cuenta en un primer momento, y luego el total de votos.
Debido a que su declaración donde sólo utiliza votos / historias que tienen el estado = 1.