MySql - Łączenie tabel i grupowanie rokordów

0

Cześć,
mam 2 tabelki, karnety oraz zajęcia.
Tabelka karnety ma kolumnę wartość, natomiast zajęcia posiadają kolumnę cena.
Potrzebuję wyciągnąć wszystkie karnety których łączna cena z tabeli zajecia przekracza wartość karnetu.
Kombinowałem z różnymi zapytaniami, wydaje mi się, że najbliższe rozwiązaniu jest to:

SELECT k.id, SUM(z.cena) FROM karnet k
JOIN zajecia z ON k.id = z.karnet_id
GROUP BY z.karnet_id HAVING SUM(z.cena > k.wartosc)

Jednak zapytanie nie zwraca wartości.
Poniżej 2 tabelki oraz przykłądowe dane które posiadają:

CREATE TABLE karnet (
    id int,
    nazwa varchar(255),
    wartosc int
);
INSERT INTO karnet (id, nazwa, wartosc)
VALUES (0,'karnet_1',20),
(1,'karnet_2',30),
(2,'karnet_3',40); 

CREATE TABLE zajecia (
    id int,
    nazwa varchar(255),
    cena int,
    karnet_id int
);
INSERT INTO zajecia (id, nazwa, cena, karnet_id)
VALUES 
(0,'zajecia_1',5,1),
(1,'zajecia_2',5,0),
(2,'zajecia_3',10,1),
(3,'zajecia_4',10,1),
(4,'zajecia_5',15,1),
(5,'zajecia_6',5,0),
(6,'zajecia_7',5,1),
(7,'zajecia_8',5,0),
(8,'zajecia_9',10,2); 

Prawidłowo napisane zapytanie powinno zwrócić karnet o id 1.
Będę wdzięczy za wszelkie podpowiedzi.

2
SELECT k.id, SUM(z.cena) FROM karnet k
JOIN zajecia z ON k.id = z.karnet_id
GROUP BY z.karnet_id
HAVING SUM(z.cena) > Max(k.wartosc)

http://sqlfiddle.com/#!9/f7d3cf/2

0

Byłem całkiem blisko ;)
Dzięki @Marcin.Miga !

1 użytkowników online, w tym zalogowanych: 0, gości: 1