0

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

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 

现在我以选择框的形式显示所有标准,这些选择框将根据每个标准(已经在数据库中)有一个值。现在我希望用户能够搜索具有这些特定标准和储值的不同公司。

例如:表 customer 有一条 id 为 1 的记录 table criteria 有记录 1--->Reputation, 2--> Salary

表 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)

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

4

1 回答 1

0

Probably you want to put and OR instead of the AND here

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)

between the 2 where conditions....they both cant be true at the same time I think

于 2012-04-13T16:49:49.057 回答