Tengo tres tablas en mi base de datos; paredes, llaves y 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); Las paredes solo deben ser accesibles con ciertas claves, las claves que acceden a cada pared se almacenan en la tabla wallAccessKeys .
Las paredes tienen muchas llaves, las llaves abren muchas paredes.
Estoy tratando de escribir una instrucción SQL para seleccionar wall.ID dado keys.key value.
Llegué hasta ahora usando Inner Join en wall y wallAccessKeys , pero no puedo resolver esto.
SELECT * FROM walls INNER JOIN wallAccessKeys ON walls.ID = wallAccessKeys.wallID¿Usar Inner join es la mejor manera de hacer esto? Si es así, ¿alguien podría ayudarme con el SQL?
Para resumir, necesito una declaración SQL donde pueda proporcionar un valor clave, por ejemplo, testingtesting123, y obtener una lista de las paredes a las que tiene acceso la clave.
Se las arregló para resolver esto usando otra unión interna. Solución a continuación si alguien la necesita.
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'