0

テーブル customer 、さまざまな基準を持つテーブルがあります (これらの基準は、評価を行うために使用されます)。別のテーブルには、値とそのキーが含まれています。

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 

ここで、すべての基準を選択ボックスの形で表示します。これには、各基準に対する値があります (既に DB にあります)。ここで、ユーザーが特定の基準と保存された値を持つさまざまな会社を検索できるようにしたいと考えています。

例: テーブル customer には id 1 のレコードがあります テーブル基準にはレコード 1---> 評判、2--> 給与があります

テーブル company_criteria には次のレコードがあります。

   company_id | criteria_id | criteria_value |
   ============================================
        1            1            10
        1            2            20

これで、ユーザーには 2 つの選択ボックスが表示されます (基準テーブルには 2 つのレコードがあることに注意してください) - 異なるオプションがあります。最初の選択ボックスから 10 個、2 番目の選択ボックスから 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

おそらく、AND の代わりに 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)

2つの条件の間....両方が同時に真になることはできないと思います

于 2012-04-13T16:49:49.057 に答える