Php 从连接了2个属性的表中选择产品

Php 从连接了2个属性的表中选择产品,php,mysql,join,Php,Mysql,Join,我有一个像这样的mysql表 PRODUCT ------- product_id: 1 | name: product .... product_id: 2 | name: product2 .. etc etc 然后我有另一张桌子 PROPERTY --- id: 1 | name: red | product_id: 1 .... id: 2 | name: large | product_id: 1 ..... id: 3 | name : brown | product_id: 2

我有一个像这样的mysql表

PRODUCT
-------
product_id: 1 | name: product .... product_id: 2 | name: product2 .. etc etc
然后我有另一张桌子

PROPERTY
---
id: 1 | name: red | product_id: 1 .... id: 2 | name: large | product_id: 1 ..... id: 3 | name : brown | product_id: 2 .... and so on ...
如何选择具有2个属性的产品

例如,我想要一个红色和大属性的产品

我试过了

SELECT * FROM product
JOIN property USING (product_id)
WHERE property.name = "red" AND property.name = "large" ....
但很明显,它不起作用:)


谢谢你的帮助,对不起我的英语

您应该使用

SELECT * FROM product
JOIN property USING (product_id)
WHERE property.name = "red" OR property.name = "large" ....
此外,您可以在
中使用

SELECT * FROM product
JOIN property USING (product_id)
WHERE property.name IN ('red', 'large') ....

您需要计算其记录的实例数

SELECT  a.productname
FROM    product a
        INNER JOIN property b
            on a.product_ID = b.product_ID
WHERE b.name IN ('red', 'large')
GROUP BY a.productname
HAVING COUNT(a.productname) = 2
如果单击演示,您可以看到分组结果与使用中的
进行常规文件归档之间的差异

也许像

SELECT p.* 
  FROM product p
 WHERE EXISTS( SELECT * 
                 FROM property a
                WHERE a.name = 'red' 
                  AND a.product_id = p.product_id)
   AND EXISTS( SELECT * 
                 FROM property a
                WHERE a.name ='large' 
                  AND a.product_id = p.product_id)

可以工作吗?

与我的解决方案相比,我更喜欢此解决方案。我需要同时具有以下属性的产品:)和/在查询中使用带有“红色”的所有产品。。。以及所有带有“大型”的产品。无论如何,谢谢检查我下面的答案,你需要将结果分组。