Мне было интересно, может ли кто-нибудь здесь помочь с моей проблемой.Я пытаюсь объединить 2 MySQL запросов в один запрос, используя подзапросы.В настоящее время у меня есть 2 запроса отдельно, которые дают результаты, которые я хочу:
Вот 2 запроса:
SELECT contact_id FROM contacts
WHERE acc_id = 1 AND email LIKE "paul%"
SELECT c0.contact_id
FROM contact_tags c0 INNER JOIN contact_tags c1
on c0.contact_id = c1.contact_id INNER JOIN contact_tags c2
on c1.contact_id = c2.contact_id where c0.tag_id = 1
AND c1.tag_id = 2 AND c2.tag_id = 3
Вот несколько примеров данных из таблиц:
Contacts:
contact_id acc_id email
54 1 paul@test.com
Tags:
id contact_id tag_id
1 54 1
2 54 2
3 54 3
4 50 1
5 50 2
Оба запроса при запуске независимо выдают правильный результат:
contact_id
54
Однако я пытаюсь вложить один запрос в другой, чтобы получить один и тот же результат из одного запроса:
Вот что я пробовал:
SELECT c0.contact_id
FROM
(
SELECT contact_id
FROM contacts
WHERE acc_id = 1 AND email LIKE "paul%"
) AS c0
LEFT JOIN contact_tags AS c1
ON c1.contact_id = c0.contact_id
AND (
SELECT c0.contact_id FROM contact_tags c0
INNER JOIN contact_tags c1
on c0.contact_id = c1.contact_id
INNER JOIN contact_tags c2 on c1.contact_id = c2.contact_id
where c0.tag_id = 1 AND c1.tag_id = 2 AND c2.tag_id = 3
)
WHERE c1.id IS NOT NULL
Однако я знаю, что это неправильно, поскольку я хочу вернуть только один уникальный идентификатор контакта, который соответствует всем условиям, как указано выше:
contact_id
54
54
54
54
Если бы кто-нибудь мог помочь мне с этим, это было бы очень ценно.
Спасибо