Исключить из запроса MYSQL при использовании синтаксиса с JOIN - PullRequest
0 голосов
/ 04 августа 2011

У меня есть запрос

SELECT table1.name, table2.wage, table3.bonus table5.shift
FROM table1
    INNER JOIN table2 ON table1.userid = table2.userid
    INNER JOIN table3 ON table2.userid = table3.userid
    LEFT JOIN table5 ON table1.userid = table5.userid;

Мне также нужно посмотреть в таблицу "отпуск" и исключить их из запроса выше.

"vacation.userid" = "table1.userid"

как

INNER JOIN vacation ON table1.userid != vacation.userid

но по какой-то причине это все еще показывает их в списке.

Ответы [ 3 ]

0 голосов
/ 04 августа 2011
SELECT table1.name, table2.wage, table2.bonus table3.shift
FROM table1
    INNER JOIN table2 ON table1.userid = table2.userid
    INNER JOIN table3 ON table2.userid = table3.userid
    LEFT JOIN table5 ON table1.name = table5.position
    LEFT JOIN vacation ON vacation.userid = table1.userid
WHERE
    vacation.userid IS NULL;
0 голосов
/ 04 августа 2011
SELECT table1.name, table2.wage, table3.bonus table5.shift
FROM table1
    INNER JOIN table2 ON table1.userid = table2.userid
    INNER JOIN table3 ON table2.userid = table3.userid
    LEFT JOIN table5 ON table1.userid = table5.userid;
WHERE NOT EXISTS
    (SELECT * FROM vacation WHERE vacation.userid = table1.userid)
0 голосов
/ 04 августа 2011

Попробуйте включить таблицу каникул в качестве ЛЕВОГО СОЕДИНЕНИЯ, а затем добавьте предложение WHERE для получения записей, в которых не удалось объединить каникулы.

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation
   FROM table1
INNER JOIN table2 ON table1.userid = table2.userid
INNER JOIN table3 ON table2.userid = table3.userid
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position
LEFT JOIN vacation on vacation.userid = table1.userid
WHERE vacation.userid IS NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...