Необходимо выяснить, какой клиент использует продукт 1 и 2, но еще не использовал продукт 3 - PullRequest
0 голосов
/ 18 июня 2020

Необходимо выяснить, какой клиент использует продукт 1 и 2, но еще не использовал продукт 3

пожалуйста, проверьте ниже mysql данные

mysql> select product,customer from test1 where product in (1,2,3);

+------+------+
| product | customer |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    1 |    3 |
|    1 |    4 |
|    1 |    5 |
|    1 |    6 |
|    1 |    7 |
|    1 |    9 |
|    1 |    8 |
|    2 |    1 |
|    2 |    3 |
|    2 |    4 |
|    2 |    6 |
|    2 |    7 |
|    2 |    8 |
|    2 |    9 |
|    3 |    4 |
|    3 |    5 |
|    3 |    6 |
+------+------+
19 rows in set (0.00 sec)

1 Ответ

1 голос
/ 18 июня 2020

Есть несколько способов сделать это, и эффективность будет зависеть от ваших индексов. Один из простых способов сделать это - использовать соединения. Вы можете присоединить таблицу к самой себе с помощью внутреннего соединения, чтобы получить клиентов, у которых есть более одного продукта, а затем использовать внешнее соединение, чтобы убедиться, что у клиента нет другого продукта.

Вот фрагмент кода:

SELECT customersWithProduct1.customer
FROM 
    test1 customersWithProduct1
    INNER JOIN test1 customersWithProduct2 ON customersWithProduct1.customer = customersWithProduct2.customer
    LEFT OUTER JOIN test1 customersWithProduct3 ON customersWithProduct1.customer = customersWithProduct3.customer AND customersWithProduct3.product = 3
WHERE 
    customersWithProduct1.product = 1
    AND customersWithProduct2.Product = 2
    AND customersWithProduct3.customer IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...