嗨,我不明白这个简单的 SQL 查询JOIN
。我想选择具有两个属性的产品。以下是表格(产品和属性):
这里有两个查询
第一个查询只使用 4 个 AND 运算符进行一次连接,并且不返回任何数据(但它应该)。
第二个查询使用表 product <-> attrv_1 和 product <-> attrv_2 进行两次连接,效果很好。:
这是第一个查询
SELECT *
FROM tblProducts p
INNER JOIN tblAttributesValues attrv ON p.productid = attrv.productid
AND attrv.atrid = 1
AND attrv.atrvalue like '%JANICKA IWONA%'
AND attrv.atrid = 2
AND attrv.atrvalue like '%N.ERA%'
和返回正确数据的第二个查询:
SELECT p.*
FROM tblProducts p
INNER JOIN tblAttributesValues attrv_1 ON p.productid = attrv_1.productid
AND attrv_1.atrid = 1
AND attrv_1.atrvalue LIKE '%JANICKA IWONA%'
INNER JOIN tblAttributesValues attrv_2 ON p.ProductID = attrv_2.ProductId
AND attrv_2.atrid = 2
AND attrv_2.atrvalue LIKE '%N.ERA%'
在第二个 SQL 查询中,我做了两次 join 以查找具有两个属性的产品。
为什么第一个查询不适用于一次连接的 AND 运算符?
这是输出: