我有这样的表格:
A table B table
-------------------- -----------------------------------
item_ID | item_Name item_ID | option_ID | option_Value
-------------------- -----------------------------------
1 item_a 2 34 2000
2 item_b 2 45 3400
3 item_c 2 12 1200
4 item_d 3 34 500
5 item_e 3 13 500
6 item_f 4 45 700
我写了一个查询来获取项目,例如选项34 = 2000 而选项12 = 1200 是:
SELECT A.item_ID, A.item_name
FROM A
LEFT JOIN B ON A.item_ID = B.item_ID
WHERE B.option_ID IN (34, 1200) AND
B.option_Value IN (1200, 2000) AND
GROUP BY A.item_ID
HAVING COUNT(A.item_ID) >= 2 /* count of option used for search, can be more*/
我的问题是我希望得到范围结果的一些选项,例如:选项ID 34 在 1000 和 2000 之间选项12 低于 4000
注意 :( option_id,option_value)对是唯一的,我想获得符合所有条件的项目
答案 0 :(得分:2)
这个怎么样?
SELECT A.item_ID, A.item_name
FROM A
LEFT JOIN B ON A.item_ID = B.item_ID
WHERE (B.option_ID=34 AND B.option_value BETWEEN 1000 AND 2000)
OR (B.option_ID=12 AND B.option_value BETWEEN 0 AND 4000)
GROUP BY A.item_ID
HAVING COUNT(A.item_ID) >= 2
也许我完全不理解这个问题?
答案 1 :(得分:2)
这可以给你你想要的东西:
WHERE
B.option_ID = 34 AND B.option_Value BETWEEN 1000 AND 2000
OR
B.option_ID = 12 AND B.option_Value < 4000
如果根据您要过滤的规则,可能有更好的方法可以执行此操作...否则,只需使用OR
和AND
即可实现您的目标。