/ / Nuovo per SQL e bisogno di qualche consiglio con le query - sql

Nuovo per SQL e bisogno di qualche consiglio con le query - sql

Recentemente ho iniziato a studiare SQL ma non riesco a capire come creare istruzioni SQL che formano risultati rilevanti da più tabelle / relazioni.

Dato il seguente schema:

Account(accNumber, balance, type)
Branch(BSB, phone, streetAddress, town)
registered(accNumber*, BSB*)

Sto cercando di formulare alcune uscite: Elencare tutti gli AccNumber registrati con uno specifico BSB (123) e mostrare la sua città quotata (Sydney).

Ho provato la seguente dichiarazione per la prima query:

SELECT accNumber, BSB, town
FROM ACCOUNT, BRANCH
WHERE BSB = 123;

Tuttavia, ottengo tutti gli account elencati anche se non appartengono al BSB, quindi ho provato:

SELECT accNumber, BSB, town
FROM ACCOUNT, BRANCH
WHERE BSB = 123
AND Town = "Sydney"
AND account.accNumber=registered.accNumber
AND branch.bsb=registered.bsb;

Questa volta ho definito ambiguamente la colonna perché hanno lo stesso nome nella tabella "registrata".

Ho provato a creare un alias nella statistica prescelta, ad esempio ACCELERARE come ACCOUNT_NUMBER ecc., Ma ho ancora errori definiti con ambiguità.

Ho provato a elencare ciò che era nella tabella registrata, ma poi non ho il nome della città, solo il accNumber e il BSB sono passati come chiave esterna.

Non riesco a capire come estrarre dati da altri tavoli e visualizzarli correttamente e apprezzerei molto ogni consiglio!

risposte:

0 per risposta № 1

Quindi sembra una domanda SQL generica. Per la tua domanda ecco cosa stai guardando:

select a.account_number
from account a, brance b, registered r
where a.account_number = r.account_number and
a.bsb = b.bsb and
b.bsb = 123;

Questo ti porterà tutti i numeri di conto dalla tabella degli account che si trova in BSB 123. Quando hai più tabelle che hanno la stessa colonna, devi dire a Oracle (e qualsiasi database per quella materia) quale colonna "account_number" ti stai riferendo (altrimenti è ambigua come ci sono più tabelle che contengono la colonna numero_ccount).

SQL riguarda le tabelle e i join. A volte devi unirti a più tavoli per ottenere ciò di cui hai bisogno, come sopra. Se non si uniscono le tabelle, come in origine, si otterrà un "prodotto incrociato", che non è quello che si desidera.

So che questo è molto "leggero", ma si spera che dalla risposta sopra alla tua domanda, avrai un'idea di come farlo.

Sarei felice di aiutarti di più se avessi delle domande. Tutti sono nuovi in ​​SQL ad un certo punto. Ci vuole pratica e poi diventa molto più facile.

-Jim


1 per risposta № 2

Questo potrebbe aiutarti a iniziare.

SELECT a.ccNumber, b.BSB, c.town
FROM ACCOUNT as a
inner join registered as b on b.accNumber=a.accNumber
inner join BRANCH as c on c.bsb = b.bsb
WHERE b.BSB = 123
AND c.Town = "Sydney"