Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

W tabeli Recepta pola Imie i Nazwisko dotyczą pacjenta, na którego recepta jest wydana. Którą kwerendę należy zastosować, aby dla wszystkich recept uzyskać przepisane leki oraz nazwisko i numer uprawnień lekarza wystawiającego?

Ilustracja do pytania z kwalifikacji INF.03
A.
SELECT Leki, Nazwisko, NumerUprawnienia FROM Recepta;
B.
SELECT Leki, Lekarz.Nazwisko, NumerUprawnienia FROM Recepta;
C.
SELECT Leki, Lekarz.Nazwisko, NumerUprawnienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id;
D.
SELECT Leki, Nazwisko, NumerUprawnienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id;
Poprawna jest kwerenda: SELECT Leki, Lekarz.Nazwisko, NumerUprawnienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id;. Pole Leki znajduje się w tabeli Recepta, natomiast nazwisko lekarza i numer jego uprawnień trzeba pobrać z tabeli Lekarz. Połączenie JOIN zestawia rekord recepty z właściwym rekordem lekarza na podstawie relacji Recepta.Lekarz_id = Lekarz.id. Zapis Lekarz.Nazwisko jest potrzebny, ponieważ pole Nazwisko występuje także w tabeli Recepta, ale tam oznacza pacjenta. Reguła do zapamiętania: gdy dane pochodzą z powiązanych tabel, należy użyć JOIN, a przy powtarzających się nazwach kolumn podać nazwę tabeli przed nazwą pola. W praktyce zapobiega to niejednoznaczności i pobraniu danych z niewłaściwej tabeli.
W tym zadaniu trzeba rozróżnić dane pacjenta od danych lekarza. Zapytanie SELECT Leki, Nazwisko, NumerUprawnienia FROM Recepta; korzysta tylko z tabeli Recepta, więc pole Nazwisko oznacza nazwisko pacjenta, a nie lekarza. Dodatkowo NumerUprawnienia nie należy do tej tabeli, więc taka kwerenda nie dostarczy wymaganych danych lekarza. Zapytanie SELECT Leki, Lekarz.Nazwisko, NumerUprawnienia FROM Recepta; wskazuje wprawdzie kolumnę Lekarz.Nazwisko, ale tabela Lekarz nie została dołączona w klauzuli FROM ani przez JOIN, dlatego baza nie ma z czego pobrać tej kolumny. Zapytanie SELECT Leki, Nazwisko, NumerUprawnienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id; poprawnie łączy tabele, lecz samo Nazwisko jest niejednoznaczne, bo występuje w obu tabelach. Typowy błąd myślowy to założenie, że nazwa kolumny wystarczy bez wskazania źródła. Poprawna kwerenda to: SELECT Leki, Lekarz.Nazwisko, NumerUprawnienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id;.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.