/ / Fusionando dos consultas MYSQL. Uso de una subconsulta con varias filas en una cláusula where: mysql

Fusionando dos consultas MYSQL. Uso de una subconsulta con varias filas en una cláusula where: mysql

A pesar de ser un novato total en las subconsultas, pensé que podría fusionar dos consultas de SQL en una. Actualmente estoy seleccionando

SELECT tB.Aid AS AID FROM tB JOIN tA ON tB.Aid=tA.id WHERE
tB.somefield=1 AND tA.anyfield=1 GROUP BY tB.Aid

Y luego LOOPING para cada fila resultante con (AID):

SELECT tB.* FROM tB WHERE tB.Aid=AID

Intenté fusionar estas consultas utilizando:

SELECT tB.* FROM tB WHERE tB.Aid=(SELECT tB.Aid FROM tB JOIN tA ON
tB.Aid=tA.id WHERE tB.somefield=1 AND tA.anyfield=1 GROUP BY tB.Aid)

Pero el mensaje de error es

que era lo que quería pero mysql no puedo manejarlo. ¿Es posible escribir esto de alguna otra manera, usando solo una consulta de SQL?

¿Tengo que explicar mi intención con mi consulta, o está claro lo que estoy tratando de hacer aquí?

Respuestas

1 para la respuesta № 1

Hazlo de forma ligeramente diferente y puedes unir ambos conjuntos de resultados:

SELECT b1.*
FROM (
SELECT b.Aid AS AID
FROM tB b JOIN tA a ON b.Aid=a.id
WHERE b.somefield=1
AND a.anyfield=1
GROUP BY b.Aid
) sq
JOIN tB b1 ON (b1.Aid = sq.AID)

1 para la respuesta № 2

Utilizar EN palabras clave

    SELECT tB.* FROM tB WHERE tB.Aid IN (SELECT tB.Aid FROM tB JOIN tA ON
tB.Aid=tA.id WHERE tB.somefield=1 AND tA.anyfield=1 GROUP BY tB.Aid)

1 para la respuesta № 3

Debes cambiar where column_name = (SUBQUERY) a where column_name IN (SUBQUERY), pero probablemente sería mejor utilizar una combinación entre las dos consultas en lugar de una entrada (al menos en la mayoría de los casos).