我有以下表格架构和值:
我想要实现的是获取匹配多个标准的提供者ID(id_provider)列表,例如:
这种结构有可能吗?
答案 0 :(得分:0)
在您的第一个查询中,您的where子句将类似于... WHERE (id_attribute = 71 AND value = "3400") AND (id_attribute = 70 AND value = "4300");
在你的第二个中,你必须使用BETWEEN ... WHERE id_attribute = 72 AND value BETWEEN(200,700);
您可能还必须使用SELECT DISTINCT id_provider
,因此您最终不会使用多个相同的ID。
答案 1 :(得分:0)
首先搜索:
SELECT your_fields
FROM your_table
WHERE ((id_attribute = 71 AND value = 3400) AND (id_attribute = 70 AND value=4300))
第二次搜索:
SELECT your_fields
FROM your_table
WHERE (id_attribute = 72 AND (value BETWEEN 200 AND 700) )
我使用了很多括号让你看到"逻辑"细分。
答案 2 :(得分:0)
其他答案是正确的bt kamil你的值字段看起来像varchar ....你不能使用“之间”为varchar。
你只能用于范围...即。在某个日期之间或数字之间。
答案 3 :(得分:0)
您正在组合来自不同行的值,因此请考虑group by
和having
。您的第一个查询是:
select id_provider
from
group by id_provider
having max(id_attribute = 71 and value = '3400') > 0 and
max(id_attribute = 70 and value = '4300') > 0;
第二个:
select id_provider
from
group by id_provider
having max(id_attribute = 72 and value between '200' and '700') > 0;
注意引号是因为value列实际上是一个字符串。如果您需要进行数字比较,则可能需要转换为数字。