Perlu menemukan pelanggan mana yang menggunakan produk 1 dan 2 dan belum menggunakan produk 3

Tolong periksa data mysql di bawah ini

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)
0
Arunkumar Muthuvel 18 Juni 2020, 17:36

1 menjawab

Jawaban Terbaik

Ada beberapa cara untuk melakukan ini dan efisiensi akan bervariasi tergantung pada indeks Anda. Salah satu cara mudah untuk melakukannya adalah dengan bergabung. Anda dapat menggabungkan tabel ke dirinya sendiri dengan inner join untuk mendapatkan pelanggan yang memiliki lebih dari 1 produk dan kemudian menggunakan outer join untuk memastikan pelanggan tidak memiliki produk yang berbeda.

Berikut cuplikan kode:

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
1
Penina 18 Juni 2020, 15:12