konto usunięte
Temat: Proste ćwiczenie -prośba o wskazanie błędu
Witam!Jest proste ćwiczenie ale za "Chiny ludowe" nie wiem dlaczego wychodzi mi błąd.
Otóż opisowo to są 3 tabele: klienci, towary, zamówienia i są wypełnione jakimiś danymi.
I teraz jest to ćwiczenie na podzapytanie zwracające wiele wartości.
Treść ćwiczenia: Zapisz zapytanie zwracające szczegóły zamówień o największej wartości dla każdego z towarów.
Problem polega na tym, że w wyniku dostaję 2 odpowiedzi dotyczące "nakrętek" a przecież z danego towaru może być tylko jedno zamówienie o max wartości (jeśli nie ma dokładnie takich samych zmówień o takiej samej max wartości na ten sam towar)!!!
Proszę o pomoc bo już oczy mi wychodzą na szypułkach a nie widzę blędu.
poniżej wklejam kod tabel, danych i ćwiczenia.
Create table klienci
(
id int primary key auto_increment,
imie varchar(20),
nazwisko varchar(20)
);
.......................................
insert into klienci
(imie, nazwisko)
values
('Jan', 'Kowalski'),
('Andrzej', 'Nowak'),
('Janusz', 'Malinowski'),
('Adam', 'Kowalski'),
('Krzysztof', 'Nowicki');
------------------------------------------------------------------
create table towary
(
id int primary key auto_increment,
nazwa varchar(30),
grupa numeric,
cena decimal(5,2)
);
..........................................
insert into towary
(nazwa, grupa, cena)
values
('Śruby', '1', '2.00'),
('Nakrętki', '1', '3.0'),
('Kątowniki', '2', '8'),
('Płaskowniki', '2', '9'),
('Gwoździe', '1', '1'),
('Panele', '3', '15'),
('Wkręty', '1', '4'),
('Deski', '3', '12'),
('Płyty', '3', '19');
-------------------------------------------------------------------
create table zamowienia
(
id int primary key auto_increment,
klient_id int,
towar_id int,
data date,
wartosc numeric(5,2),
constraint klient_fk foreign key (klient_id) references klienci(id),
constraint towary_fk foreign key (towar_id) references towary(id)
);
.............................................
insert into zamowienia
(klient_id, towar_id, data,wartosc)
values
('1', '2', '2007.01.01', '12.44'),
('1', '4', '2007.01.01', '10.22'),
('1', '2', '2007.02.12', '15.88'),
('2', '1', '2007.01.01', '22.35'),
('2', '1', '2007.02.02', '28.00'),
('2', '4', '2007.03.01', '2.28'),
('3', '1', '2007.02.11', '18.48'),
('3', '4', '2007.01.01', '12.44'),
('4', '1', '2007.03.11', '15.26'),
('5', '4', '2007.03.02', '6.11');
Ćwiczenie 1
Napisz zapytanie zwracające szczegóły zamówień o nawyższej wartości dla każdego z zamowień.
select zamowienia.id, imie, nazwisko, nazwa, data, wartosc
from zamowienia, towary, klienci
where wartosc in
(select max(wartosc) from zamowienia group by towar_id)
and zamowienia.klient_id=klienci.id
and zamowienia.towar_id=towary.id
order by wartosc;
Pozdrawiam: PiotrPiotr Lutyński edytował(a) ten post dnia 03.12.10 o godzinie 20:04