2016-06-22 2 views
0

에서 타의 추종을 불허하는 컬럼 위치에 따라 세 번째 테이블에서 레코드를 찾을 수 있지만 수 : 나는 다음과 같은 기록을 얻기 위해 노력하고 두 테이블

SELECT * 
    FROM D 
    WHERE D.C IN (
     SELECT A.* 
     FROM A 
     LEFT JOIN B ON (A.C = B.C) 
     WHERE B.C IS NULL) 

는 기본적으로-일치하지 무엇이든 싶어 와 비교A.Column & B.Column이고 D의 선택은 A & B 결과를 기반으로합니다.

편집은 실제 응용 프로그램에서 코드 예제를 표시합니다 :

이 기반으로 우송 & 갱신 사용자를 만료하고 두 테이블에 로깅에 갱신 통지를 전송하기 위해 사용되는 PHP의 샘플 코드 만료 사용자 :이 상황을 undesrtanding에 hepls

 SELECT * FROM expiring_users WHERE expiring_users.id IN(
      SELECT mailer_log.* 
      FROM mailer_log 
      LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id) 
      WHERE renewals_log.id IS NULL) 

희망.

+0

'D.C'와 일치시키려는 'A' 또는'B' 열은 무엇입니까? – arilia

+0

나는 당신이 당신의 질문을 이해하는데 더 도움이 될 샘플 데이터와 예상 결과를 게시해야한다고 생각합니다. – Blank

+0

@All,이 코드는 select를 실행하는 부분입니다. SELECT * FROM expiring_users WHERE expiring_users.id IN ( SELECT mailer_log. * FROM mailer_log LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id) 어디에서 renewals_log.id가 NULL)' – sitedevcode

답변

0

제대로 작동합니다.

SELECT * FROM expiring_users 
WHERE expiring_users.id IN(
    SELECT mailer_log.id 
    FROM mailer_log 
    LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id) 
    WHERE renewals_log.id IS NULL) 

그것은 mailer_logrenewals_log하지 매치 항목에 따라 expiring_users 테이블에서 모든 레코드를 가져옵니다이 상황에서 다른 사람을 위해, 나는 아래의 코드를 사용했다.

알림 메일 시스템이 갱신시 레코드를 업데이트하지 못했고 기존 사용자 테이블을 기반으로 사용자가 만료되었는지 확인하는 데 사용됩니다.

관련 문제