Dane z dwóch tabel

0

Chciałbym napisać zapytanie pobierające dane z dwóch tabel bazy danych obsługującej wypożyczalnie samochodów.
Pierwsza (Samochod)zawiera dane na temat samochodów: id, marka, model, rocznik, data_zakupu
Druga (Wypozyczenia)zawiera dane na temat wypożyczeń: id, id_samochod, data_wyp, data_zwrot, id_klient.

Zapytanie ma wyświetlić listę samochodów zakupionych po określonej dacie (data_zakupu) oraz datę pierwszego wypożyczenia każdego z nich np.:

12716254(id); Ford(marka); Fiesta(model) ; 01-01-2015(data_zakupu); 01-02-2105(data_wyp)(pierwsze wypożyczenie)

Zacząłem od warunku na pierwsze wypożyczenie:
select MIN(data_wyp) from Wypozyczenia
Zwraca mi najwcześniejszą datę wypożyczenia ale z pośród wszystkich samochodów.

Próbuje połączyć tabele:
SELECT id,marka,model FROM Samochod as s where s.id = (SELECT MIN(data_wyp) from Wypozyczenia as w where s.id = w.id_samochod)
ale zwraca mi tylko jedna pozycję , chyba zupełnie przypadkową.

a gdy dodam warunek daty zakupu:
SELECT id,marka,model FROM Samochod as s where s.id = (SELECT MIN(data_wyp) from Wypozyczenia as w where s.id = w.id_samochod) and s.data_zakupu >'01-01-2017'
to nie zwraca nic.

Co muszę poprawić w zapytaniu ?

1

Sprawdź (LEFT JOIN bo moga być kupine samochody a jeszcze nigdy nie wypożyczone):

SELECT id,marka,model, data_zakupu, Min(w.data_wyp) as PierwszaDataWyp
FROM Samochod s
LEFT JOIN Wypozyczenia w
ON s.id = w.id_samochod
WHERE data_zakupu > '01-01-2017'
Group by id,marka,model, data_zakupu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.