Подзапрос в EXISTS
не связан с основным запросом. Так что он просто проверяет, возвращает ли подзапрос какие-либо строки, а не то, что они имеют те же nome_unidade
и id_unidade
, что и основной запрос.
SELECT
u1.nome_unidade 'name',
u1.id_unidade 'value'
FROM
sys.tbl_unidades AS u1
JOIN
sys.tbl_unidades_contratos AS c1
ON u1.id_unidade = c1.id_unidade
WHERE
u1.dt_fim IS NULL
AND c1.id_contrato = 10
AND EXISTS
(SELECT 1
FROM
sys.tbl_unidades AS u2
JOIN
sys.tbl_unidades_contratos AS c2
ON u2.id_unidade = c2.id_unidade
WHERE
u2.dt_fim IS NULL
AND c2.id_contrato = 11
AND u2.id_unidade = u1.id_unidade)
Я подозреваю, что вам не нужны обе таблицы в подзапросе, вам просто нужно проверить tbl_unidades_contratos
.
Также см. Как вернуть строки с одинаковыми значениями столбца в MySql , чтобы узнать о других способах поиска идентификаторов, имеющих все несколько значений в столбце.