/ / Nowość w SQL i potrzebujesz porady z zapytaniami - sql

Nowość w SQL i potrzebujesz porady z zapytaniami - sql

Niedawno zacząłem uczyć się języka SQL, ale nie mogę się skupić na tworzeniu instrukcji SQL, które tworzą odpowiednie wyniki z wielu tabel / relacji.

Biorąc pod uwagę następujący schemat:

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

Próbuję sformułować niektóre wyniki: Wymień wszystkie numery zarejestrowane na konkretnym BSB (123) i pokaż miasto (Sydney).

Próbowałem następujące oświadczenie dla pierwszego kwerendy:

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

Dostaję wszystkie konta na liście, nawet jeśli nie należą do BSB, więc próbowałem:

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

Tym razem otrzymuję kolumnę niejednoznacznie zdefiniowaną, ponieważ mają taką samą nazwę w tabeli "zarejestrowanej".

Próbowałem już tworzyć alias w wybranej pozycji, np. AccNumber AS ACCOUNT_NUMBER itd., Ale wciąż otrzymuję niejednoznacznie zdefiniowane błędy.

Próbowałem tylko wyliczyć, co znajdowało się w zarejestrowanej tabeli, ale potem nie otrzymałem nazwy miasta, tylko accNumber i BSB przekazane jako klucz obcy.

Nie mogę zrozumieć, jak pobierać dane z innych tabel i wyświetlać je poprawnie, i bardzo doceniam każdą radę!

Odpowiedzi:

0 dla odpowiedzi № 1

To brzmi jak ogólne pytanie SQL. Dla Twojego zapytania jest to, na co patrzysz:

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;

W ten sposób otrzymasz wszystkie numery kont z domenytabela kont, które są w BSB 123. Gdy masz wiele tabel, które mają tę samą kolumnę, musisz powiedzieć Oracle (i dowolnej bazie danych), do której odnoszą się kolumny "account_number" (w przeciwnym razie jest niejednoznaczna jak istnieje wiele tabel zawierających kolumnę numer_konta).

SQL dotyczy tabel i sprzężeń. Czasami musisz dołączyć do kilku stołów, aby uzyskać to, czego potrzebujesz, jak wyżej. Jeśli nie dołączysz do tabel, tak jak początkowo, otrzymasz "produkt krzyżowy", który nie jest tym, czego potrzebujesz.

Wiem, że jest to bardzo "lekkie", ale mam nadzieję, że z powyższej odpowiedzi na twoje pytanie, dowiesz się, jak to zrobić.

Byłbym szczęśliwy, gdyby mogłem ci pomóc, jeśli masz pytania. "W pewnym momencie wszyscy są nowicjuszami SQL. Nie przejmuj się tym. To wymaga praktyki, a potem staje się znacznie łatwiejsze.

-Jim


1 dla odpowiedzi nr 2

To może pomóc Ci zacząć.

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"