2017-01-01 1 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

중 하나 t1 또는 t2 더 포함 된 경우 조인에 사용 ON t1.tid != t2.id 같은 조건은 당신에게 결과를 줄 가능성이 높다 것 (행의 일부에 대해서는 t1t2, tidid의 행이 다르므로 한 행보다 많음). 귀하가 찾고있는 것은 "특정 일에 결석하지 않은 사용자, 즉 absent 표에 항목이없는 곳"입니다.

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

당신을 환영합니다! –

관련 문제