mysql - tipos - subconsultas oracle
Use los resultados de una consulta de SQL en otra donde declaración(subconsulta?) (1)
Veo muchas preguntas similares pero son tan complejas que no las entiendo o no parecen estar preguntando lo mismo.
Es simple: tengo dos columnas: usuarios (dmid) y descargas (dfid).
Seleccione todos los usuarios que descargaron un archivo específico:
SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024"
Usando los usuarios de arriba, encuentre todos los archivos que todos descargaron:
SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above}
Cuente y ordene los resultados de dfid, para que podamos ver cuántas descargas recibió cada archivo:
dfid dl_count_field ---- -------------- 18 103 3 77 903 66
Mi intento de responder.
Esto parece cercano, pero MySql se atasca y no responde incluso después de 30 segundos. Reinicio Apache finalmente. Y ahora no sé cómo estructurar el recuento y el orden sin obtener errores de sintaxis debido a la compleja declaración, y puede que ni siquiera sea la correcta.
SELECT dfid from downloads_downloads WHERE dmid IN (
SELECT DISTINCT dmid FROM `downloads_downloads` where dfid = "7024")
SELECT dfid,count(*)
from downloads_downloads
WHERE dmid IN (
SELECT dmid
FROM downloads_downloads
where dfid = "7024"
)
group by dfid
o usando un auto unirse
select t1.dfid,count(*)
from downloads_downloads t1
inner join downloads_downloads t2
on t1.dmid = t2.dmid
where t2.dfid = "7024"
Si esto lleva demasiado tiempo, entonces probablemente deba publicar un plan explicativo (¡búsquelo en Google!)