Я пытаюсь использовать запрос, чтобы выбрать все данные компании, которая отвечает определенному условию, но у меня возникают проблемы при этом.Следующее - то, что я сделал до сих пор:
SELECT *
FROM company a
WHERE a.id IN (SELECT b.company_id
FROM provider b
WHERE b.service_id IN (2, 4));
То, что я предполагаю для роли подзапроса (используя таблицу ниже), состоит в том, чтобы выбрать company_id
, который обладает service_id
2
и 4
.
Таким образом, в этом примере будет возвращено только company_id
5
:
+----------------+
| provider TABLE |
+----------------+
+----------------+----------------+----------------+
| id | company_id | service_id |
+--------------------------------------------------+
| 1 | 3 | 2 |
| 2 | 5 | 2 |
| 3 | 5 | 4 |
| 4 | 9 | 6 |
| 5 | 9 | 7 |
| ... | ... | ... |
Как вывозможно, предположил, что использование IN
в подзапросе не удовлетворяет моим потребностям, оно выберет company_id
5
, но также company_id
3
.Я понимаю, почему IN
существует, чтобы проверить, соответствует ли значение какому-либо значению в списке значений, поэтому это не совсем то, что мне нужно.
Итак, мой вопрос:
Как заменить IN
в моем подзапросе, чтобы выбрать company_id
с service_id
2
и 4
?