una tipos subconsultas subconsulta sola poner ora nombre más mas fila doble devuelve datos consulta con columna mysql sql subquery

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).

  1. Seleccione todos los usuarios que descargaron un archivo específico:

    SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024"

  2. Usando los usuarios de arriba, encuentre todos los archivos que todos descargaron:

    SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above}

  3. 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!)