2014-05-17 2 views
0

뷰를 만들 필요가있는 세 개의 테이블이 있습니다. 테이블은 (간체)됩니다복잡한 SQL 조인

네트워크 (NETWORKID, 이름)

사용자 (사용자 ID, NETWORKID, 이름)

메시지 (의 MessageID, 사용자 ID,받는 사람을 , 메시지, 타임 스탬프)

굵게은 기본 키이고 기울임 꼴은 외래 키입니다.

메시지 (메시지 ID, 네트워크, 수신자, 사용자, 메시지, 타임 스탬프)가 필요합니다. 네트워크 network.name입니다

이,받는 사람이 message.recipient이며, 사용자가 user.name이며, 메시지는 message.message이며, 타임 스탬프는 내가 꽤 현재 붙어있어

message.timestamp입니다. 메시지 테이블에서 시작하여 뷰를 생성하면 network_name을 얻는 데 어려움을 겪습니다. 왜냐하면 두 테이블 뒤로 가기 때문입니다. 메시지의 user_id를 알았고 사용자로부터 네트워크를 얻을 수 있습니다.

내가 가진 무엇

, 어떤 아마 끔찍하게 잘못 (그리고 완전한)입니다 것은 : 내가 PostgreSQL을 사용하고

CREATE VIEW messages AS SELECT message.messageid, network.name, message.recipient, nick.nick, message.message, message.time FROM message JOIN nick ON nick.nick_id = message.nick_id

. 어떤 도움이라도 대단히 감사하겠습니다.

답변

3

그냥 사용 세 JOINS :

CREATE VIEW messages AS 
SELECT m.messageid, n.name, m.recipient, u.name, m.message, m.timestamp 
FROM message m 
    JOIN user u ON m.userid = u.userid 
    JOIN network n ON u.networkid = n.networkid 
+0

이 그것을했다 신난다! 내가 생각했던 것보다 훨씬 더 간단했다. 감사. – jready

관련 문제