Question

i have problem with join table and use multiple conditions... My code:

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

In this code, the conditions are in WHERE clausule. I also tried to put in into JOIN ON (...) but it also didn't work. When i have only one condition it works. I read some articles about using OR instead of AND, it worked but not as i expected. I need to search only rows with certain IDs (multiple).

Était-ce utile?

La solution

why not use this instead of many conditions.

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

Autres conseils

when add condition to WHERE, condition must be from FROM tbl add condition JOIN ON Try this:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top