このクエリを実行しようとしましたが、うまくいきません。
誰か助けていただければ幸いです。
SELECT DISTINCT(fld_tech_id)
FROM tbl_tech_properties
WHERE fld_tech_category_value_id = 236
AND fld_tech_category_value_id = 234
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
なぜあなただけを使用しないのですか
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
) ;