2017-04-23 5 views
-1

데이터베이스에 세 개의 테이블이 있습니다. 벽, 키 및 wallAccessKeys.PostgreSQL, 내부 조인 세 테이블을 사용하여 SELECT

CREATE TABLE walls (
    id SERIAL PRIMARY KEY, 
    name VARCHAR(50) 
); 

INSERT INTO walls (name) 
VALUES ('Test Wall'); 

CREATE TABLE keys (
    id SERIAL PRIMARY KEY, 
    key VARCHAR(50) 
); 

INSERT INTO keys (key) 
VALUES ('testingtesting123'); 

CREATE TABLE wallAccessKeys (
    id SERIAL PRIMARY KEY, 
    keyID INT, 
    wallID INT 
); 

INSERT INTO wallAccessKeys (keyID, wallID) 
VALUES (1, 1); 

벽이 특정 키를 액세스 할 수 있어야합니다, 각 벽에 액세스 키는 wallAccessKeys 테이블에 저장됩니다.

벽에는 많은 키가 있으며, 키는 많은 벽을 엽니 다.

wall.ID을 선택하기 위해 SQL 문을 쓰려고하는데, keys.key 값이 주어졌습니다.

지금까지 wallwallAccessKeys의 내부 결합을 사용했지만이 사실을 알 수 없습니다.

SELECT * 
FROM walls 
INNER JOIN wallAccessKeys 
ON walls.ID = wallAccessKeys.wallID 

이 방법을 사용하는 가장 좋은 방법은 내부 결합입니다. 그렇다면 제발 누군가가 SQL을 도와 줄 수 있습니까?

요약하면, 필자는 키 값을 제공 할 수있는 SQL 문이 필요합니다. testingtesting123하고, 열쇠가 접근 할 수있는 벽의 목록을 얻습니다.

답변

0

다른 내부 결합을 사용하여이를 알아낼 수 있도록 관리했습니다. 다른 사람이 필요로하는 경우 해결책이 필요합니다.

SELECT walls.id 
     FROM walls 
     INNER JOIN wallAccessKeys 
     ON walls.id = wallAccessKeys.wallID 
     INNER JOIN keys 
     ON keys.id = wallAccessKeys.keyID and keys.key = 'testingtesting123'