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 (...) 但它也没有工作。当我只有一个条件时,它会起作用。我读了一些关于使用 OR 而不是 AND 的文章,它有效,但不像我预期的那样。我只需要搜索具有特定 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 回答
0

当向 WHERE 添加条件时,条件必须来自 FROM tbl 添加条件 JOIN ON 试试这个:

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 AND 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
于 2013-07-30T08:26:31.810 回答