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.