2017-01-01 2 views
0

У меня есть этот MySQL-запрос, который связывает две таблицы. Я хочу присоединиться к теме, где можно получить не существующие данные из другой таблицы.Я хочу получить не существовавшие данные из двух таблиц

это здесь получить зарегистрированную дату для пользователей

SELECT 
t2.name ,phone 
FROM 
    (SELECT name,tid,date_d,class_time AS 'absent' 
     FROM absent where date_d = '2016-12-04') t1 
JOIN 
    (SELECT name, id,phone AS 'phone' 
     FROM users ) t2 
    ON t1.tid = t2.id 
    group by id 

Я хочу, чтобы пользователи, которые не зарегистрированы в таблице t1 из таблицы два я использовал тот же выше запрос, но с чем-то вроде этого ON t1.tid != t2.id он работает только с ориентировочной дата

SELECT 
    t2.name ,phone 
    FROM 
     (SELECT name,tid,date_d,class_time AS 'absent' 
      FROM absent where date_d = '2016-12-04') t1 
JOIN 
     (SELECT name, id,phone AS 'phone' 
      FROM users ) t2 
     ON t1.tid != t2.id 
     group by id 
+0

так что вы хотите, чтобы пользователи, которые не присутствуют в отсутствии? странно .... :) – barudo

ответ

1

условие как ON t1.tid != t2.id используется в объединении, весьма вероятно, даст вам результат, если либо t1 или t2 содержит больше чем один ряд (потому что тогда для некоторых строк в t1 и t2, tid и id будет отличаться). То, что вы ищете, это «те пользователи, которые НЕ были отсутствовали в определенный день, т. Е. Там, где нет записи в absent-table», правильно?

Попробуйте следующее:

SELECT name,id,phone AS 'phone' 
FROM users t2 
WHERE t2.id not in 
    (SELECT tid 
    FROM absent where date_d = '2016-12-04') 
+0

благодарю вас за помощь – mester

+0

Добро пожаловать! –

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