ZŁĄCZENIA WEWNĘTRZNE
LEFT/RIGHT JOIN złączenie zewnętrzne
Wyświetla rekordy zgodnie z warunkiem złączenia oraz wszystkie rekordy pochodzące z tablicy, której nazwa znajduje się po lewej /prawej stronie klauzuli FROM
1. Wyświetl id_wypożyczenia markę i model wszystkich wypożyczonych aut.
SELECT
dane_wypozyczen.id_wypozyczenia,
samochody.marka,
samochody.model
FROM dane_wypozyczen
INNER JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2. Wyświetl id_wypożyczenia, markę, model i date wypożyczenia wszystkich wypożyczonych aut.
SELECT
dane_wypozyczen.id_wypozyczenia,
samochody.marka,
samochody.model
FROM dane_wypozyczen
INNER JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
ORDER BY dane_wypozyczen.id_wypozyczenia
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3. Wyświetl id_wypożyczenia, markę, model i datę wypożyczenia, jak również imię i nazwisko klienta, który dany samochód wypożyczył wszystkich wypożyczonych aut.
SELECT
dane_wypozyczen.id_wypozyczenia,
samochody.marka,
samochody.model,
wypozyczenia.data_wyp,
klienci.imie_klienta,
klienci.nazwisko_klienta
FROM dane_wypozyczen
INNER JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
INNER JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
ORDER BY dane_wypozyczen.id_wypozyczenia;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3. Wyświetl id_wypożyczenia, markę, model i datę wypożyczenia, jak również imię i nazwisko klienta, który dany samochód wypożyczył wszystkich wypożyczonych aut, ponadto wypisz imie i nazwisko pracownika który obsługiwał dane wypożyczenie.
SELECT
dane_wypozyczen.id_wypozyczenia,
samochody.marka,
samochody.model,
wypozyczenia.data_wyp,
klienci.imie_klienta,
klienci.nazwisko_klienta,
pracownicy.imie_pracownika,
pracownicy.nazwisko_pracownika
FROM dane_wypozyczen
INNER JOIN samochody ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
INNER JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
INNER JOIN pracownicy ON pracownicy.id_pracownika=wypozyczenia.id_pracownika
ORDER BY dane_wypozyczen.id_wypozyczenia;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.Wyświetl markę i model samochodu z datą jego wypożyczenia.
SELECT
wypozyczenia.data_wyp,
samochody.marka,
samochody.model
FROM wypozyczenia
INNER JOIN dane_wypozyczen ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
INNER JOIN samochody ON samochody.id_samochodu-dane_wypozyczen.id_samochodu
ORDER BY wypozyczenia.data_wyp;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4a.Wyświetl markę i model samochodu z datą jego wypożyczenia.
SELECT
w.data_wyp,
s.marka,
s.model
FROM wypozyczenia AS w
INNER JOIN dane_wypozyczen ON w.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
INNER JOIN samochody AS s ON s.id_samochodu=dane_wypozyczen.id_samochodu
ORDER BY w.data_wyp;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.Wyświetl id wypożyczenia oraz nazwisko pracownika który je obsługiwał. Nazwiska pracowników którzy nie obsługiwali żadnego wypożyczenia również należy wypisać.
SELECT
pracownicy.nazwisko_pracownika,
wypozyczenia.id_wypozyczenia
FROM pracownicy
LEFT JOIN wypozyczenia ON pracownicy.id_pracownika=wypozyczenia.id_pracownika
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6.Wyświetl nazwiska pracowników którzy nie obsługiwali żadnego wypożyczenia
SELECT
pracownicy.nazwisko_pracownika,
wypozyczenia.id_wypozyczenia
FROM pracownicy
LEFT JOIN wypozyczenia ON pracownicy.id_pracownika=wypozyczenia.id_pracownika
WHERE wypozyczenia.id_wypozyczenia IS null
ORDER BY `wypozyczenia`.`id_wypozyczenia` ASC;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7. Wyświetl nazwisko pracownika i id wypożyczenia. W przypadku kiedy do id wypożyczenia nie mamy przypisanego pracownika należy również wyświetlić takie rekordy.
SELECT
pracownicy.nazwisko_pracownika,
wypozyczenia.id_wypozyczenia
FROM pracownicy
RIGHT JOIN wypozyczenia ON pracownicy.id_pracownika=wypozyczenia.id_pracownika
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8.Wyswietl takie id wypożyczen do których nie sa przypisani pracownicy
SELECT
pracownicy.nazwisko_pracownika,
wypozyczenia.id_wypozyczenia
FROM wypozyczenia
LEFT JOIN pracownicy ON pracownicy.id_pracownika=wypozyczenia.id_pracownika
WHERE pracownicy.nazwisko_pracownika IS NULL;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8A.
SELECT
pracownicy.nazwisko_pracownika,
wypozyczenia.id_wypozyczenia
FROM pracownicy
RIGHT JOIN wypozyczenia ON pracownicy.id_pracownika=wypozyczenia.id_pracownika
WHERE pracownicy.nazwisko_pracownika IS NULL;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
9. Wyświetl imiona i nazwiska klientów, którzy nie wypożyczyli żadnego auta.
SELECT
klienci.imie_klienta,
klienci.nazwisko_klienta
FROM klienci
LEFT JOIN wypozyczenia ON klienci.id_klienta=wypozyczenia.id_klienta
WHERE wypozyczenia.id_klienta IS NULL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10.Wyświetl marki i modele aut które nigdy nie zostały wypożyczone
SELECT
samochody. model,
samochody. marka
FROM samochody
LEFT JOIN dane_wypozyczen ON samochody.id_samochodu=dane_wypozyczen.id_samochodu
WHERE dane_wypozyczen. id_samochodu IS NULL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11.Wyświetl imiona i nazwiska klientów wraz z wartością ich wszystkich wypożyczen
SELECT
SUM(dane_wypozyczen.cena_doba*dane_wypozyczen.ilosc_dob) wartość,
klienci.imie_klienta,
klienci.nazwisko_klienta
FROM dane_wypozyczen
INNER JOIN wypozyczenia ON wypozyczenia.id_wypozyczenia=dane_wypozyczen.id_wypozyczenia
INNER JOIN klienci ON klienci.id_klienta=wypozyczenia.id_klienta
GROUP BY wypozyczenia.id_klienta
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
12.Wyświetl imiona i nazwiska klientów i pracowników pochodzących z tych samych miast
SELECT
klienci.imie_klienta,
klienci.nazwisko_klienta,
pracownicy.imie_pracownika ,
pracownicy.nazwisko_pracownika,
pracownicy.miasto_pracownika miasto
FROM klienci
INNER JOIN pracownicy ON klienci.miasto_klienta=pracownicy.miasto_pracownika
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
13.Wyświetl nazwisko pracownika i obok nazwisko jego szefa
SELECT
p.nazwisko_pracownika,
s.nazwisko_pracownika szef
FROM pracownicy p
JOIN pracownicy s ON p.szef_id=s.id_pracownika
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
14.Wyświetl daty wypożyczeń, a także imiona i nazwiska klientów, którzy w danym dniu dokonywali wypożyczenia.
SELECT
w.data_wyp,
k.imie_klienta,
k.nazwisko_klienta
FROM wypozyczenia w
JOIN klienci k ON w.id_klienta = k.id_klienta;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
15.Wyświetl marki i modele aut wraz z cenami za dobę wypożyczenia.
SELECT
s.marka,
s.model,
dp.cena_doba
FROM dane_wypozyczen dp
JOIN samochody s ON dp.id_samochodu = s.id_samochodu;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
16.Wyświetl imiona i nazwiska pracowników wypożyczalni, którzy obsługiwali wypożyczenia w lipcu 2022 roku.
SELECT DISTINCT
p.imie_pracownika,
p.nazwisko_pracownika
FROM wypozyczenia w
JOIN pracownicy p ON w.id_pracownika = p.id_pracownika WHERE MONTH(w.data_wyp) = 7 AND YEAR(w.data_wyp) = 2022;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
17.Wyświetl marki i modele aut, które w okresie od kwietnia do września wypożyczał klient o nazwisku Karwowski.
SELECT DISTINCT
s.marka,
s.model
FROM wypozyczenia w
JOIN klienci k ON w.id_klienta = k.id_klienta
JOIN dane_wypozyczen dp ON w.id_wypozyczenia = dp.id_wypozyczenia
JOIN samochody s ON dp.id_samochodu = s.id_samochodu WHERE k.nazwisko_klienta = 'Karwowski' AND MONTH(w.data_wyp) BETWEEN 4 AND 9;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
18.Wyświetl wartość wypożyczeń, które obsługiwał pracownik o nazwisku Nowacki.
SELECT
SUM(dp.cena_doba * dp.ilosc_dob) AS wartosc_wypozyczen FROM wypozyczenia w
JOIN pracownicy p ON w.id_pracownika = p.id_pracownika
JOIN dane_wypozyczen dp ON w.id_wypozyczenia = dp.id_wypozyczenia WHERE p.nazwisko_pracownika = 'Nowacki';
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
19.Wyświetl modele samochodów oraz łączną ilość dni na które były one wypożyczone
SELECT
samochody.model,
SUM(dane_wypozyczen.ilosc_dob) suma_dni
FROM dane_wypozyczen
INNER JOIN samochody ON dane_wypozyczen.id_samochodu = samochody.id_samochodu
GROUP BY samochody.model
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
20.Wyśiwetl imion i nazwiska klientów którzy w swoim wypożyczeniu nie maja zadnych klientow
SELECT
k.imie_klienta,
k.nazwisko_klienta
FROM klienci AS k
RIGHT JOIN wypozyczenia AS w ON k.id_klienta=w.id_klienta
WHERE w.id_pracownika IS NULL;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
21.Wyśiwetl imion i nazwiska klientów którzy nie dokonali zadnego wypozyczenia