0

結合テーブルに問題があり、複数の条件を使用しています...私のコード:

SELECT * FROM 
   (SELECT sid, MAX(info_date_add) AS max_info_date_add FROM skiresort GROUP BY sid) skiresort_max 
INNER JOIN skiresort 
   ON 
      skiresort_max.sid = skiresort.sid AND 
      skiresort_max.max_info_date_add = skiresort.info_date_add 
JOIN skiresort_theme_value 
   ON skiresort_theme_value.skiresort_id = skiresort.id 
WHERE 
   skiresort_theme_value.skiresort_theme_id = '1' AND 
   skiresort_theme_value.skiresort_theme_id = '2' AND 
   skiresort_theme_value.skiresort_theme_id = '4' 
GROUP BY skiresort.sid 
ORDER BY skiresort.title_en

このコードでは、条件は WHERE 句にあります。JOIN ON(...) にも入れてみましたがダメでした。条件が1つしかない場合は機能します。AND の代わりに OR を使用することに関する記事をいくつか読みましたが、うまくいきましたが、期待どおりではありませんでした。特定の ID (複数) を持つ行のみを検索する必要があります。

4

2 に答える 2

3

多くの条件の代わりにこれを使用しないでください。

WHERE 
         skiresort_theme_value.skiresort_theme_id in (1, 2,4) 

GROUP BY skiresort.sid

HAVING COUNT(DISTINCT skiresort_theme_value.skiresort_theme_id) = 3
ORDER BY skiresort.title_en
于 2013-07-30T08:19:29.077 に答える