MySQL 查询左联接问题

MySQL query left join issue

我有两个表:

product table
  product_id  product_name
       1         sample1
       2         sample2 
       3         sample3  

product_child table
  pc_id  product_id  product_size
    1        1          5
    2        1          6
    3        1          7
    4        2          5
    5        2          8
    6        2          7
    7        3          8
    8        3          6
    9        3          9

我的问题是:
我想获得 product_size(5 或 9)和 6.
的所有产品 这意味着我想要这样的结果:

 product_id  product_name
       1         sample1
       3         sample3

我需要这样的查询:

SELECT p.*
FROM   products p
       LEFT JOIN product_child pc
              ON pc.product_id = p.product_id
WHERE ( pc.product_size = 5 OR pc.product_size = 9)
       AND pc.product_size = 6 

但它不起作用。

WHERE  pc.product_size = 5
       AND pc.product_size = 6 

AND替换为OR即可。

试试这个查询:

SELECT p.*
FROM   products p
       JOIN product_child pc1 ON pc1.product_id = p.product_id and pc1.product_size  in (5,9)
       JOIN product_child pc2 ON pc2.product_id = p.product_id and pc2.product_size  = 6

如果我理解正确的话,您需要所有具有两种尺寸的产品。
所以你有不同的产品,每个产品都有不同的尺寸。并且您只需要同时出现(5 或 9)和 6 种尺寸的这些产品。
我想你需要这样的东西:

SELECT * from products where product_id IN
( SELECT product_id from product_child where product_size = 5 or product_size = 9
 INTERSECT
 SELECT product_id from product_child where product_size = 6
)

在上面的查询中我做了交集。
我选择了一套(尺寸 5 或 9 的产品)和第二套(尺寸 6 的产品)。 交集意味着找到出现在两组中的产品。