Witam, od niedawna uczę się SQL i mam problem z pewnym zadaniem, proszę o pomoc. Używam SSMS.
Posiadam trzy tabele w mojej bazie danych: zamówienia, towary, klienci:
Zadanie 1: Wybranie najdroższego zamówienia dla każdego z towarów i wyświetlenie kto je zamówił (id,imie,nazwisko,data,wartość). Napisałem kod:
select zamowienia.id, klienci.imie, klienci.nazwisko, zamowienia.data, zamowienia.wartosc, zamowienia.towar_id, towary.nazwa from zamowienia,klienci,towary
where zamowienia.wartosc in
(select max(zamowienia.wartosc) from zamowienia group by zamowienia.towar_id) and
(klienci.id=zamowienia.klient_id) and
(towary.id=zamowienia.towar_id);
rezultatem tego zapytania jest:
i tutaj pojawia się problem. Dlaczego wyświetla mi rekord pierwszy? Dla śrubek największa wartość zamówienia to 15,88. Rekord pierwszy nie powinien zostać wyświetlony. Co więcej jeśli wykonam samo podzapytanie:
select max(zamowienia.wartosc) from zamowienia group by zamowienia.towar_id;
To liczba rekordów i wartości się zgadzają.
Zadanie 2: Chciał bym zsumować wartości zamówień dla każdego z klientów. Czyli mam pięciu klientów i chce wyświetlić ich imie,nazwisko i sume jaką u mnie wydali. Zupełnie nie wiem jak się za to zabrać, proszę o pomoc.