PostgreSQL,Inner Join使用三个表连接SELECT

时间:2017-04-23 17:29:59

标签: sql postgresql join inner-join

我的数据库中有三个表;墙壁,钥匙和wallAccessKeys。

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表中。

墙上有很多钥匙,钥匙打开了很多墙。

我正在尝试编写一个SQL语句来选择wall.ID给定keys.key值。

到目前为止,我已经在wallwallAccessKeys上使用了内部联接,但无法理解这一点。

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

使用Inner join是最好的方法吗?如果是这样,有人可以帮我解决SQL吗?

总而言之,我需要一个SQL语句,我可以提供一个键值,例如: testingtesting123,获取密钥可以访问的墙的列表。

1 个答案:

答案 0 :(得分:1)

管理使用另一个内部联接来解决这个问题。如果有人需要,解决方案吼叫。

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'