我的数据库中有三个表;墙壁,钥匙和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
值。
到目前为止,我已经在wall
和wallAccessKeys
上使用了内部联接,但无法理解这一点。
SELECT *
FROM walls
INNER JOIN wallAccessKeys
ON walls.ID = wallAccessKeys.wallID
使用Inner join是最好的方法吗?如果是这样,有人可以帮我解决SQL吗?
总而言之,我需要一个SQL语句,我可以提供一个键值,例如: testingtesting123,获取密钥可以访问的墙的列表。
答案 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'