2

まず第一に、私は SQL の専門家ではないので、おそらくいくつかの角かっこが抜けているか、ばかばかしい単純なものがいくつかあります ;-)

これが機能して4行を返す理由を誰か教えてください:

SELECT ppa.products_id FROM products_propattributes ppa 
WHERE ( (options_id = "11" AND options_values_id = "18") 
OR (options_id = "4" AND options_values_id = "4") )

そして、これはそうではありませんが、1行に一致する必要があります:

SELECT ppa.products_id FROM products_propattributes ppa 
WHERE ( (options_id = "11" AND options_values_id = "18") 
AND (options_id = "4" AND options_values_id = "4") )

どんな助けでも大歓迎です!前もって感謝します..

バス

4

3 に答える 3

3

2 番目のクエリではANDs しかないため、options_id = "11"ANDのoptions_id = "4"両方が一致することはありません。

もちろん、options_values_id = "18"ANDでも同じoptions_values_id = "4"です。

于 2013-09-14T14:06:21.503 に答える
2

options_id = "11" AND の行を探す 2 番目のクエリoptions_id = "4"options_id列クラウドには値が 1 つしかないため、これは不可能です。

于 2013-09-14T14:06:33.253 に答える
2

各行の列には、可能な値が 1 つしかないためです。IDを使用してtrueを返す両方の条件を持つを取得したい場合OR

SELECT ppa.products_id 
FROM products_propattributes ppa 
WHERE (options_id = "11" AND options_values_id = "18") OR 
      (options_id = "4" AND options_values_id = "4") 
GROUP BY ppa.products_id
HAVING COUNT(*) = 2
于 2013-09-14T14:07:23.143 に答える