Ilość produktów o danej dacie - jak policzyć?

0

Mam tabelę:

produkt text,
data_przydatnosci date

są w niej różne produkty i różne daty. Nie wiem, jakie to są daty, dostaję gotowy plik z datami i produktami do zaimportowania w bazie. i teraz, muszę policzyć, ile produktów jest dla każdej z dat. Np. w bazie są 3 produkty:

mąka 31-12-2012
cukier 31-12-2012
kasza 14-03-2014

i teraz wychodzi tak: 2 produkty kończą datę przydatności do spożycia w 31-12-2012 a jeden 14-03-2014. Produktów tych może być bardzo dużo, z różnymi datami. Mi chodzi tylko o wpisanie w jakiej dacie kończy przydatność ile produktów.

Jak napisać zapytanie SQL, które mi to zrobi? Używam postgreSQL

0

Coś takiego:

SELECT count(*) AS ilosc, data_przydatnosci FROM produkty WHERE data_przydatnosci BETWEEN '2013-01-01' AND '2013-03-01' GROUP BY data_przydatnosci
0

Dzięki, jednak nie działa:/ dopiero teraz zobaczyłem - nazwę pobieram z innej tabeli, datę z innej korzystając z INNER JOIN:

SELECT nazwa, data_przydatnosci, FROM produkty INNER JOIN szczegoly USING (id);

jak poradzić sobie w takim wypadku?

0

Napisałem tak i mam błędy:

testdb=> SELECT nazwa, data_przydatnosci, COUNT(*) AS ilosc  FROM produkty INNER JOIN szczegoly USING (id) GROUP BY data_przydatnosci;
ERROR:  column "produkty.nazwa" must appear in the GROUP BY clause or be used in an aggregate function
testdb=> 
0

Czego nazwę chcesz wyświetlić? Tzn. którego z 512 produktów?

0

No lol, a czego się spodziewasz? Chcesz policzyć ile jest produktów dla danej daty, więc jak sobie wyobrażasz wypisanie nazwy produktu? o_O
Załóżmy że mam 3 produkty o tej samej dacie. Czego oczekujesz w "nazwa"? Skoro wynikiem jest jeden rekord z datą i ilością (równą 3)

0

<facepalm> rzeczywiście ... To pomogło

SELECT COUNT(*) AS ilosc, data_przydatnosci FROM produkty INNER JOIN szczegoly USING (id) GROUP BY data_przydatnosci;

Dziękuję :)

0

A swoją drogą do czego w tym zapytaniu join'owanie ze szczegółami?

0

Bo w szczegółach mam datę + jakieś szczegóły produktu, cena, opis, a w produkty ma tylko nazwę ;) w pierwszym przypadku spojrzałem na nie to zadanie ;)

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