[英]Multiple ANDs from multiple columns in an Inner Join
我有一個產品表,一個自定義定義表和一個值表:
制品
id product_name price
48 product one 32.99
87 another product 2.50
...etc
fielddefs
id name
6 brand
9 colour
23 flavour
...etc
fieldvals
product_id fielddef_id value
48 6 Rowntree
48 9 Red
48 23 Strawberry
87 6 Cadburys
87 9 Yellow
87 23 Lemon
etc...
我現在正在嘗試使用帶有每個fielddef下拉選擇的過濾器進行搜索:
$ sql =“ SELECT * FROM products INNER JOIN fieldvals on fieldvals.product_id = products.id WHERE product_name類似'%”。$ q。“%'AND(fielddef_id ='7'AND value ='”。$ c。“' )AND(fielddef_id ='8'AND value ='“。$ b。”')AND(fielddef_id ='9'AND value ='“。$ f。”')AND(fielddef_id = '10'AND value =' “。$ t。”')AND(fielddef_id ='5'AND value ='“。$ h。”')AND(fielddef_id ='6'AND value ='“。$ v。”')“;
SQL的回顯給了我類似的東西:
SELECT * FROM products INNER JOIN fieldvals on fieldvals.product_id = products.id WHERE product_name類似'%cola%'AND(fielddef_id ='7'AND value ='Purple')AND(fielddef_id ='9'AND value ='Apple' )AND(fielddef_id = '10'AND value ='Party')AND(fielddef_id ='5'AND value ='true')AND(fielddef_id ='6'AND value ='true')
此代碼僅對$ q之后的一個條件起作用-即,您可以包括$ q和$ c,或$ q和$ h,或$ q和$ v,它可以成功找到匹配的乘積,但是多個嵌套的AND語句不似乎有效。
我要去哪里錯了?
此鏈接提供了一個類似的問題 ,即有人要從相同的“字段數據”表中查詢並且需要多個條件。
您遇到的問題是,對於任何單個記錄,對於給定的列,它們都不能具有MULTIPLE值,這僅僅是比較多個記錄並應用HAVING COUNT(*)=您要查找的條件的結果。 另一個(通過我上面的鏈接)顯示了這一點。 現在如何將這種類似的方法應用於您的問題。
SELECT
P.ID,
P.Product_Name,
P.Price
FROM
products P
INNER JOIN fieldvals FV1
ON P.id = FV1.product_id
AND FV1.FieldDef_ID = '7'
AND FV1.Value = 'value expected for 7'
INNER JOIN fieldvals FV2
ON P.id = FV2.product_id
AND FV2.FieldDef_ID = '8'
AND FV2.Value = 'value expected for 8'
INNER JOIN fieldvals FV3
ON P.id = FV3.product_id
AND FV3.FieldDef_ID = '9'
AND FV3.Value = 'value expected for 9'
(continue same "join" sample above for as many
criteria conditions you need to add... just keep
incrementing the alias ... FV1, FV2, FV3, etc...)
WHERE
P.Product_Name like '%your criteria%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.