2009-12-27 6 views
2

약 1 년 동안 우리는 사용자가 고유 한 ID가 아닌 사용자 이름 및/또는 전자 메일 주소로 로그인 할 수있게되었습니다. 시스템이 중복 된 사용자 이름/전자 메일을 우아하게 처리 할지라도 고유 한 사용자 이름과 전자 메일 주소를 최종적으로 적용하기로 결정했습니다. 중복 된 테이블과 중복 된 ID가 사용되는 테이블 (예 : 중복 된 사용자 ID에 종속 된 테이블, true는 1, false는 0)을 표시하는 테이블을 MySQL에 생성하는 작업이 있습니다. 중복 된 데이터가 삭제 표시되면이 테이블은 참조 용으로 사용됩니다. 즉, 다음과 같은 테이블을 생성하려고합니다 :MySQL 복수 조인/하위 쿼리 질문

| User_id | 사용자 이름 | 이메일 | Exists_in_Table1 | Exists_in_Table2 | Exists_in_Table3 |
--------------------------------------------- -------------------------------------------------- ------------
| 0001 ..... | test1 ......... | 이메일 . 0 .......................... | 0 .......................... | 1 .......................... |
| 0002 ..... | test2 ......... | 이메일 . 0 .......................... | 1 .......................... | 1 .......................... |
| 0003 ..... | test3 ......... | 이메일 . 1 .......................... | 1 .......................... | 1 .......................... |


어떻게 수행되는지는 중요하지 않습니다. 내 SQL 기술이 다소 부족하기 때문에 PHP와 여러 가지 간단한 SQL 쿼리를 사용하여 프로그래밍 방식으로이 작업을 수행하려고했습니다. 그러나 단일 SQL 쿼리 또는 일련의 쿼리 (PHP를 사용하지 않고)가 가장 깨끗한 접근 방법이라고 생각합니다. 중복을 쿼리하는 방법을 알고 있지만 여러 테이블을 쿼리하고 적절한 방식으로 사용자 ID로 조인하는 방법을 알아낼 수 없습니다. 나는 이것에 대한 모든 도움을 주셔서 감사합니다. 고맙습니다.

답변

2
SELECT u.User_id, u.Username, u.Email, 
IF(t1.User_id IS NULL, 0, 1) AS Exists_in_Table1, 
IF(t2.User_id IS NULL, 0, 1) AS Exists_in_Table2, 
IF(t3.User_id IS NULL, 0, 1) AS Exists_in_Table3 
FROM Users u 
LEFT OUTER JOIN Table1 t1 USING (User_id) 
LEFT OUTER JOIN Table2 t2 USING (User_id) 
LEFT OUTER JOIN Table3 t3 USING (User_id); 
+0

감사합니다. 빠른 응답입니다. 내가 사무실에 돌아 오면 곧 이걸 시험해 볼거야. –