Tengo 3 tablas de las que me gustaría obtener algunos datos:
Mesa principal:
create table if not exists exchange ( id bigint, name varchar(255), ); INSERT INTO exchange (id, name) VALUES (1, 'PARIS');Segunda mesa:
create table exchange_api ( id bigint, api_name varchar(255), exchange_id bigint ); INSERT INTO exchange_api (id, api_name, exchange_id) VALUES (8, 'PARIS-API', 5);Tercera mesa:
create table instrument ( id bigint, symbol varchar(255), exchange_api_id bigint ); INSERT INTO instrument (id, symbol, exchange_api_id) VALUES (47, 'PARIS-ARD', 8); INSERT INTO instrument (id, symbol, exchange_api_id) VALUES (48, 'PARIS-SRD', 8);Necesito mapear las tablas de la siguiente manera:
Primer exchange de mesa que quiero enviar param PARIS
y como resultado quiero obtener este resultado:
PARIS-ARD PARIS-SRD ¿Cómo puedo obtener estos datos usando JOIN ?
Select I.symbol from instrument I inner join exchange_api API On I.exchange_api_id API.id Inner JOIN exchange E ON API.exchange_id = E.id where E.name = 'PARIS'Si desea pasar Pass 'PARIS' como valor, volverá
PARIS-ARD PARIS-SRDcomo salida
SELECT instrument.symbol FROM exchange JOIN exchange_api ON exchange.id = exchange_api.exchange_id JOIN instrument ON exchange_api.id = instrument.exchange_api_id WHERE exchange.name = 'PARIS'Y con ALIAS:
SELECT inst.symbol as I FROM exchange AS e JOIN exchange_api AS ea ON e.id = ea.exchange_id JOIN instrument inst ON ea.id = inst.exchange_api_id WHERE e.name = 'PARIS'