2014-02-15 5 views
0

У меня есть следующий MySQL QueryMySQL: Различные условия для каждого INNER JOIN

SELECT n.* FROM notifications as n 
    INNER JOIN notifications as nc ON ... ... 
    INNER JOIN following as f ON ... ... 
     WHERE 
      (condition 1) 
       OR 
        (condition 2) 

Мой guestion как я могу убедиться, что условие 1 evaluted для первого внутреннего соединения (нк) и условие 2 evaluted для второго внутреннего соединения (f)

+1

Просто используйте правильный псевдоним таблицы, предшествующей имени столбца, каждому условию – Fabio

+3

Пожалуйста, поделитесь реальным запросом. Ваш вопрос не имеет большого смысла. Концепция JOINs состоит в том, что вы объединяете две строки таблицы в одну. С 2 JOINs вы объединяете 3 строки в один. THEN, предложение WHERE, фильтрует эти «комбинированные строки». Существует не понятие предложения WHERE для каждого приложения. (Может быть, вы также должны поделиться образцами данных и набором результатов, который вы пытаетесь достичь.) – AgRizzo

+0

Мне не нужно комбинировать 3 строки в одну. Я хочу получать уведомления, присоединив следующую таблицу с уведомлениями и уведомлениями с уведомлениями. – user3311313

ответ

0

Лучший способ - переместить условия из предложения WHERE в предложение ON. В случае с Inner Join, WHERE и ON работают одинаково, и всегда лучше отфильтровать данные как можно раньше в запросе. Итак, ваш запрос будет выглядеть так: SELECT n. * FROM извинения как n INNER JOIN уведомления как nc ON ... ... AND (Условие 1) INNER JOIN следующий как f ON ... ... AND (Условие 2)