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

Tabele: Firmy i Zamowienia są powiązane relacją jeden do wielu. Aby wybrać jedynie id zamówienia wraz z odpowiadającą mu nazwą firmy dla firm, których poziom jest równy 4, należy zastosować polecenie

Opcje odpowiedzi:
A
SELECT Zamowienia.id, nazwa FROM Zamowienia JOIN Firmy WHERE poziom = 4;
B
SELECT id, nazwa FROM Zamowienia JOIN Firmy ON Zamowienia.Firmy_id = Firmy.id WHERE poziom = 4;
C
SELECT Zamowienia.id, nazwa FROM Zamowienia JOIN Firmy ON Zamowienia.id = Firmy.id WHERE poziom = 4;
D
SELECT Zamowienia.id, nazwa FROM Zamowienia JOIN Firmy ON Zamowienia.Firmy_id = Firmy.id WHERE poziom = 4;
Prawidłowa
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: D (SELECT Zamowienia.id, nazwa FROM Zamowienia JOIN Firmy ON Zamowienia.Firmy_id...)

Aby poprawnie połączyć dane z dwóch tabel powiązanych relacją, należy użyć klauzuli JOIN oraz wskazać warunek złączenia za pomocą słowa kluczowego ON. Kluczem obcym z tabeli Zamowienia jest Firmy_id, a kluczem głównym tabeli Firmy pole id, stąd zapis: ON Zamowienia.Firmy_id = Firmy.id.

Dodatkowo, ponieważ kolumna o nazwie id występuje w obu tabelach, próba wybrania samego id w sekcji SELECT skończyłaby się błędem niejednoznaczności nazw kolumn (ambiguous column). Należy jednoznacznie wskazać tabelę źródłową jako Zamowienia.id, co zostało prawidłowo zrealizowane w opcji D.

Pozostałe odpowiedzi są błędne, ponieważ:

  • Odpowiedź A nie zawiera klauzuli ON.
  • Odpowiedź B zawiera niejednoznaczne odwołanie SELECT id.
  • Odpowiedź C zawiera błędny logicznie warunek połączenia kluczy głównych ON Zamowienia.id = Firmy.id.

Dlaczego pozostałe opcje są nieprawidłowe?

  • A: by poprawnie połączyć dane z dwóch tabel powiązanych relacją, należy użyć klauzuli JOIN oraz wskazać warunek złączenia za pomocą słowa kluczowego ON. Kluczem obcym z tabeli Zamowienia jest Firmy_id, a kluczem głównym tabeli Firmy pole id, stąd zapis: ON Zamowienia.Firmy_id = Firmy.id.
  • B: Zapytanie SELECT id, nazwa FROM Zamowienia JOIN Firmy ON Zamowienia.Fi zawiera nieprawidłową składnię SQL lub zwraca niewłaściwy zestaw danych.
  • C: Zapytanie SELECT Zamowienia.id, nazwa FROM Zamowienia JOIN Firmy ON Za zawiera nieprawidłową składnię SQL lub zwraca niewłaściwy zestaw danych.

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.