Szukaj na tym blogu

niedziela, 24 października 2021

Zadanie 12. (0-5)

Dane są dwie tabele bazy danych: klienci i samochody połączone relacją jeden do wielu (patrz
rysunek):
W tabelach przechowywane są informacje zgodne z nazwami pól (np. „marka” – marka samochodu). Pole id w tabeli klienci oznacza identyfikator klienta i jest kluczem głównym w tej tabeli. Pole id w tabeli samochody oznacza identyfikator samochodu. Pole o nazwie wlasciciel w tabeli samochody jest kluczem obcym w tej tabeli i oznacza identyfikator klienta, który jest właścicielem samochodu. Na potrzeby zadania zakładamy, że każdy samochód ma tylko jednego właściciela, natomiast każda osoba może być właścicielem jednego lub więcej niż jednego samochodu.

Zadanie 12.1. (0–1)

Zapisz w języku SQL zapytanie, które da w wyniku listę klientów (z id, imionami i nazwiskami) uporządkowaną alfabetycznie według nazwiska.


Rozwiązania

LibreOffice Base

SELECT "id", "imie", "nazwisko" FROM "klienci" ORDER BY "nazwisko"

Microsoft Office Access

SELECT *
FROM klienci
ORDER BY klienci.nazwisko;

Zadanie 12.2. (0–2)

Zapisz w języku SQL zapytanie, które da w wyniku listę marek i modeli samochodów, dla

których rocznik zawiera się w przedziale [2010,2020] oraz moc jest większa niż 100 KM. Listę

posortuj niemalejąco według nazwy marki i modelu.

Uwaga: Każda para model i marka w zestawieniu może pojawić się tylko raz (nawet jeśli jest

kilka samochodów o tej samej marce i modelu spełniających warunki zadania).

Rozwiązania

LibreOffice Base

SELECT DISTINCT "marka", "model" FROM "samochody" WHERE "moc" > 100 AND "rocznik" BETWEEN 2010 AND 2020 ORDER BY "marka" ASC, "model" ASC

Microsoft Office Access

SELECT DISTINCT samochody.marka, samochody.model
FROM samochody
WHERE (samochody.moc>100) AND (samochody.rocznik Between 2010 And 2020)
ORDER BY samochody.marka, samochody.model;

Zadanie 12.3. (0–2)

Zapisz w języku SQL zapytanie, które da w wyniku listę klientów z ich id, imionami,

nazwiskami oraz liczbą samochodów posiadanych przez każdego z nich. Lista powinna być

posortowana nierosnąco według liczby samochodów.

Uwaga: uwzględnij, że niektórzy klienci mogą obecnie nie mieć żadnego samochodu (wtedy

trzeba wypisać ich z liczbą samochodów zero)


Rozwiązania

LibreOffice Base

SELECT "imie", "nazwisko", COUNT( "id" ) AS "ile" FROM "klienci" LEFT JOIN "samochody" ON "klienci"."id" = "samochody"."wlasciciel" GROUP BY "imie", "nazwisko" ORDER BY "ile" DESC

Microsoft Office Access
SELECT klienci.imie, klienci.nazwisko, Count(samochody.id) AS ile
FROM klienci LEFT JOIN samochody ON klienci.Id = samochody.wlasciciel
GROUP BY klienci.imie, klienci.nazwisko
ORDER BY Count(samochody.id) DESC;

Przypisy

  1. https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2023/Informatory/Informator_EM2023_informatyka.pdf