我有一个表客户,一个具有不同标准的表(这些标准随后用于评级)。另一个表中包含值及其键。
table company
==============
int company_id
varchar name
bool status
table criteria
==============
int criteria_id
varchar name
bool status
table company_criteria
==============
int company_id
int criteria_id
int criteria_value
varchar comments
现在我以选择框的形式显示所有标准,这些标准将根据每个标准(已经在数据库中)拥有一个值。现在我希望用户能够搜索具有这些特定标准和存储值的不同公司。
例如:table customer有一个id为1的记录 表标准有记录 1 --->声誉,2 - >薪水
table company_criteria有以下记录:
company_id | criteria_id | criteria_value |
============================================
1 1 10
1 2 20
现在用户看到两个选择框(记住条件表中有两个记录) - 具有不同的选项。他从第一个选择框中选择10,从第二个选择框中选择20。我将如何编写查询 - 我尝试了以下
SELECT DISTINCT `co`.*
FROM (`company` co)
JOIN `company_criteria` cc ON `co`.`company_id` = `cc`.`company_id`
WHERE (`cc`.`criteria_id`=1 AND `cc`.`criteria_value`>=10) AND (`cc`.`criteria_id`=2 AND `cc`.`criteria_value`>=20)
它只是不起作用 - 总是让我没有结果。感谢任何帮助 - 谢谢。
答案 0 :(得分:0)
可能你想把和OR而不是AND这里
SELECT DISTINCT `co`.*
FROM (`company` co)
JOIN `company_criteria` cc ON `co`.`company_id` = `cc`.`company_id`
WHERE (`cc`.`criteria_id`=1 AND `cc`.`criteria_value`>=10) OR (`cc`.`criteria_id`=2 AND `cc`.`criteria_value`>=20)
在两个条件之间....他们在我认为的同时都不可能