こんにちは私はこの単純なSQLクエリを理解していませんJOIN
。2つの属性を持つ製品を選択したいと思います。テーブル(製品、次に属性)は次のとおりです。
そしてここに2つのクエリがあります
最初のクエリは、4つのAND演算子を使用して1つの結合のみを実行し、データを返しません(ただし、そうする必要があります)。
2番目のクエリは、テーブルproduct<->attrv_1およびproduct<->attrv_2と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%'
適切なデータを返す2番目のクエリ:
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%'
2番目のSQLクエリでは、2回結合して、2つの属性を持つ製品を検索しました。
最初のクエリが1つの結合でAND演算子を適用しないのはなぜですか?
出力は次のとおりです。