2015-01-13 2 views
0

그래서 SQL 테이블에서 두 개의 열을 가져와야하지만 DISTINCT()로 인해 하나의 별칭을 사용해야합니다. 나는이 상황에 대한 문서에서 많은 것을 찾을 수 없으므로 여기로 향했다.별칭 사용시 여러 열 가져 오기

이 (두 번째 열없이) 작동 :

SELECT distinct(message_recips.userid) as userid 
FROM message_recips WHERE messageid = ? 

그러나이되지 않습니다

SELECT distinct(message_recips.userid) as userid, users.email 
FROM message_recips 
INNER JOIN users ON users.email = message_recips.userid 
WHERE messageid = ? 

왜 두 번째 열 (users.email) 작동하지이 원인을 추가합니까? 나는 단순히 메시지를받는 사람의 전자 메일 주소를 얻으려고합니다. 첫 번째 쿼리는 메시지 수신자를 완벽하게 가져옵니다. 전자 메일 주소를 얻는 올바른 형식이라는 것을 확신합니다.

쿼리는 결과를 반환하지만 오류는 반환하지 않습니다.

+0

문제는 무엇입니까? – philipxy

+0

두 번째 테이블에 조인 한 열을 추가 한 것은 아닙니다. 새로운 코드 *가 어떻게 작동하지 않는지 기술하십시오 *. 쿼리를 실행합니까? 오류가 있습니까? –

+0

[this] (https://stackoverflow.com/help/mcve)를 읽고 이에 대해 행동하십시오. – philipxy

답변

1

두 번째 쿼리는 users.email = message_recips.userid 인 각 테이블의 행에서 만들 수있는 모든 가능한 행의 사용자 ID와 전자 메일을 요구합니다.

다시 행이 없으므로 message_recips 사용자 ID와 동일한 사용자 전자 메일이 없습니다.

(. 놀라운되지 않음)

당신은 아마 원하는 :

SELECT distinct(message_recips.userid) as userid, users.email 
FROM message_recips 
INNER JOIN users ON users.userid = message_recips.userid 
WHERE messageid = ? 
+0

아, 네 말이 맞아. 나는 이것을하는 방법을 안다. 제스. 나와 협력 해 주셔서 감사합니다. – ambe5960