棘手的多重条件MySQL查询

时间:2012-04-13 16:43:51

标签: mysql join where-clause

我有一个表客户,一个具有不同标准的表(这些标准随后用于评级)。另一个表中包含值及其键。

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)

它只是不起作用 - 总是让我没有结果。感谢任何帮助 - 谢谢。

1 个答案:

答案 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)

在两个条件之间....他们在我认为的同时都不可能