Przejdź do treści głównej
INF.03Pytanie #885 z 1558sql-zlaczenia-i-agregacja

Tabele Osoby i Adresy są połączone relacją jeden do wielu. Jakie zapytanie SQL należy zapisać, aby korzystając z tej relacji, prawidłowo wyświetlić nazwiska oraz przyporządkowane im miasta?

Opcje odpowiedzi:
A
SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id=Adresy.id;
Prawidłowa
B
SELECT nazwisko, Miasto FROM Osoby.Adresy_id=Adresy.id FROM Osoby, Adresy;
C
SELECT nazwisko, Miasto FROM Osoby, Adresy;
D
SELECT nazwisko, Miasto FROM Osoby, Adresy WHERE Osoby.id=Adresy.id;
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: A (SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id=Adresy.id;)

Aby połączyć dwie tabele złączem wewnętrznym w standardzie ANSI SQL, stosuje się klauzulę JOIN (lub INNER JOIN) z warunkiem złączenia w klauzuli ON. Zapytanie poprawnie łączy klucz obcy Osoby.Adresy_id z kluczem głównym Adresy.id.

Dlaczego pozostałe opcje są nieprawidłowe?

  • B: Zawiera podwójną klauzulę FROM oraz niepoprawny warunek złączenia – jest to błąd składniowy.
  • C: Brak warunku złączenia powoduje powstanie iloczynu kartezjańskiego (CROSS JOIN) – każdy rekord z tabeli Osoby zostanie połączony z każdym rekordem z tabeli Adresy.
  • D: Warunek Osoby.id=Adresy.id łączy błędne kolumny (porównuje klucz główny osoby z kluczem głównym adresu zamiast z kluczem obcym Adresy_id).

Chcesz poćwiczyć całą kwalifikację INF.03?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF03
Reklama

Podobne pytania z działu „Sql zlaczenia i agregacja”

Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 43 pytań z tego działu.