2013-07-30 2 views
0

у меня есть проблемы с присоединиться к столу и использовать несколько условий ... Мой код:MySQL присоединиться с несколькими условиями (не OR но AND)

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 clausule. Я также попытался включить JOIN ON (...), но это также не сработало. Когда у меня есть только одно условие, оно работает. Я прочитал несколько статей об использовании OR вместо AND, он работал, но не так, как я ожидал. Мне нужно искать только строки с определенными идентификаторами (несколько).

+1

Почему, черт возьми, вы бы использовать 'AND' здесь, а не' OR' , Я не понимаю, что вы пытаетесь сделать. Вам нужны строки, где 'skiresort_theme_id' равно 1, 2 и 4, * одновременно * ?? –

+0

да, как вы писали - одновременно – general666

ответ

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 
+2

Я прочитал ваш разум :). –

+0

Вау, это должно быть то, что означает OP. Хорошее чтение! –

+0

спасибо, что это решение работает;) Это немного медленнее (я не знаю, есть ли какие-то более быстрые решения) ANYWAY THANK YOU ... – general666

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 
+0

Я пробовал это, и это не сработало ... – general666

Смежные вопросы