我的产品表中,用户自定义的表,和值表:多AND将在内部加入
产品
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产品INNER JOIN fieldvals ON fieldvals.product_id = AND(fielddef_id ='8'AND value ='“)。 (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产品INNER JOIN fieldvals ON fieldvals.product_id = products.id WHERE PRODUCT_NAME LIKE '%可乐%' AND (fielddef_id ='7'和值='紫色')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声明似乎不起作用。
我哪里错了?
可能重复http://stackoverflow.com/questions/4326561/mysql-struggling-with-query-in-one-to- many-relationship-matching-multiple-condit) –