Mysql объединяет таблицы, но только результаты с определенной строкой - PullRequest
0 голосов
/ 23 мая 2019

три таблицы: Клиенты (id_cus, cli_name, ...) Продукты (id_pro, pro_name, ...) Заказы (id_cus, id_pro)

Таблица заказов - это связь между клиентами и продуктами.

Вопрос: Как получить клиентов (id_cus), которые выбирают только конкретный продукт.

Пример: Продукт A (id_pro = 100) и хотят, чтобы все клиенты Клиентов, которые только купили этот Продукт A , не Продукт A и Продукт B . Только продукт А (id_pro = 100).

SELECT `id_cus` from `Orders` where `id_pro=100;

Это дает мне всех клиентов, которые когда-либо покупали продукт A (и, возможно, продукт B, C тоже).

Извините, не знаю.

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Взгляните на СУЩЕСТВУЕТ

Просто:

SELECT o.id_cus
FROM orders o
WHERE o.id_pro = 100
    AND NOT EXISTS (SELECT * from orders o2 where o2.id_cus = o.id_cus AND o2.id_pro != 100)
0 голосов
/ 23 мая 2019

Для этого вы можете использовать агрегацию:

select o.id_cus
from orders o
group by o.id_cus
having min(o.id_pro) = max(o.id_pro) and min(o.id_pro) = 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...