-1

このクエリを実行しようとしましたが、うまくいきません。

誰か助けていただければ幸いです。

SELECT DISTINCT(fld_tech_id) 
FROM tbl_tech_properties 
WHERE fld_tech_category_value_id = 236 
    AND fld_tech_category_value_id = 234
4

2 に答える 2

4

WHEREテーブルの各行に対してテストされ、単一の行がfld_tech_category_value_id同時に 234 と 236 の両方に等しいことはできないため、条件が一致することは不可能です。代わりに、fld_tech_id でグループ化し、グループに 2 つの行が含まれていることを確認する必要があります。

SELECT fld_tech_id
FROM tbl_tech_properties
WHERE fld_tech_category_value_id IN (234, 236)
GROUP BY fld_tech_id
HAVING COUNT(DISTINCT fld_tech_category_value_id) = 2

オンラインで動作することを確認してください: sqlfiddle

于 2012-11-29T13:14:40.880 に答える
2

なぜあなただ​​けを使用しないのですか

SELECT DISTINCT fld_tech_id
FROM tbl_tech_properties 
WHERE fld_tech_category_value_id IN (236,234) ;

参照のサンプル データに基づく結果:

サンプルテーブル:

FLD_TECH_ID     FLD_TECH_CATEGORY_VALUE_ID
1               234
2               256
3               236
3               250
2               226
3               216
1               240
1               236

結果:

FLD_TECH_ID
1
3

参照SQLFIDLE

機能するソリューション:

SELECT DISTINCT fld_tech_id
FROM tbl_tech_properties AS t
WHERE EXISTS
      ( SELECT *
        FROM tbl_tech_properties AS t1
        WHERE t1.fld_tech_id = t.fld_tech_id
          AND t1.fld_tech_category_value_id = 236
      )
  AND EXISTS
      ( SELECT *
        FROM tbl_tech_properties AS t2
        WHERE t2.fld_tech_id = t.fld_tech_id
          AND t2.fld_tech_category_value_id = 234
      )  ;

参照SQL-Fiddle テスト 2

于 2012-11-29T13:19:33.543 に答える