2017-04-23 17 views
-1

私のデータベースには3つのテーブルがあります。壁、キー、wallAccessKeys。PostgreSQL、内部結合3つのテーブルを使用した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' 
関連する問題