Как сформировать SQL-запрос для следующего результата? - PullRequest
0 голосов
/ 05 октября 2018

Schema

Это примерная схема, которую можно использовать для достижения моего результата.

Здесь, Customer - PurchaseHistory - отношение 1: N.Пользователь может иметь n покупок.

PurchaseHistory - отношение продукта 1: 1.Каждая покупка состоит только из одного продукта.

Желаемый результат:

Отображение покупателя, который приобрел продукт Product1 и продукт2 или просто продукт 3.

Пример данных:

Клиент

customer table

История покупки:

purchase History

Product1

product1

Product2 product2

Ожидаемый ответ: Клиент c2, поскольку он приобрел продукт1 и продукт2.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018
Select customer_id from purchasehistory t
Where (t.purchese_id in (select purchese_id from product1) 
And t.purchese_id in (t.purchese_id in (select purchese_id from product2))
Or t.purchese_id in (t.purchese_id in (select purchese_id from product1)

Это будет работать, хотя ваша таблица таблиц должна измениться, вам не нужна таблица для каждого продукта, она работает в мире из 3 продуктов, а не в 100.

0 голосов
/ 05 октября 2018

Я написал один запрос для вас.Это не проверено с фактическими данными.Но я написал с твоим требованием.Поиграйте и внесите некоторые изменения и попробуйте на консоли MySQL с вами.Посмотрите, сможете ли вы достичь желаемого результата.

select c.name from purchasehistory ph
left join customer c on ph.customerid = c.customer_id
join product1 p1 on ph.purchase_id = p1.purchase_id
join product2 p2 on ph.purchase_id = p2.purchase_id
join prodcut3 p3 on ph.purchase_id = p3.purchase_id
where (p1.purchase_id is not null and p2.purchase_id is not null) 
or p3.purchase_id is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...