sql >> Base de Datos >  >> RDS >> Mysql

Obtenga todas las entradas de la Tabla B que tienen una relación con múltiples entradas (lista dada) de la Tabla A

Si está buscando seleccionar en función de una lista de As (no TODOS los As), hágalo así:

SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2

Reemplazar (1,2) con tu lista y 2 en la cláusula que tiene con el número de elementos de la lista.

Si obtiene su lista de As de una subconsulta, podría hacerlo así (aunque no en MySQL...):

WITH subquery (
 --subquery code here
)

SELECT b_id
FROM ab
WHERE a_id IN subquery
GROUP BY b_id
HAVING COUNT(a_id) = (SELECT COUNT(*) FROM subquery)

En MySQL tendrías que poner tu código de subconsulta dos veces y soltar la cláusula WITH.

También podría usar una tabla temporal, que luego conduciría a seleccionar TODOS los As de esa tabla temporal y, por lo tanto, la respuesta de Gordon Linoff...