Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak wyfiltrować towary z ostatnią datą zakupu
Forum PHP.pl > Forum > Bazy danych > MySQL
staryadam60
Mam w bazie tabele:
towary; id, nazwa itd
faktury; id, dostawca, data zakupu itd
tabelę haszującą; id_towary, id_faktury, ceny zakupu itd

Jeden towar jest kupowany w wielu latach a ja potrzebuję wyciągnąć je z ostatnich dat w jakich zostały zakupione.

Niestety moje Selecty wyciągają wszystkie daty zakupów.
Jeśli zastosuję MAX(data_zak) to zaś wyfiltruje mi z ostatniego dnia, czyli nie wszystkie jakie chciałbym otrzymać.

Kod
SELECT t.id_towar, t.nazwa, f.data_zak
FROM towar t
LEFT  JOIN  (faktura f,  faktura_has_towar thf)
ON (t.id_towar=thf.id_towar AND f.id_faktura=thf.id_faktura )
WHERE t.nazwa LIKE '%jakaś niepełna nazwa towaru%' AND f.data_zak=(SELECT MAX(f.data_zak) FROM faktura f) ORDER BY t.nazwa, f.data_zak ASC


Już nie wiem jak mam wyfiltrować towary aby nie wychodziły ze wszystkimi datami.

Mała prośba, nie odsyłajcie mnie do nie polskich stron bo ja niestety bardzo dawno temu uczyłem się tylko wschodniego języka którego i tak się nie nauczyłem
mmmmmmm
  1. SELECT t.id_towar, t.nazwa, f.data_zak
  2. FROM towar t
  3. LEFT JOIN (faktura f, faktura_has_towar thf) /* nie wiem WTF ale tak zostawię */
  4. ON (t.id_towar=thf.id_towar AND f.id_faktura=thf.id_faktura )
  5.  
  6. WHERE
  7. t.nazwa LIKE '%jakaś niepełna nazwa towaru%'
  8. AND (t.id_towar,f.data_zak) IN (SELECT t.id_towar, MAX(f.data_zak) FROM towar t JOIN (faktura f, faktura_has_towar thf) ON (t.id_towar=thf.id_towar AND f.id_faktura=thf.id_faktura ) GROUP BY 1)
  9. ORDER BY t.nazwa, f.data_zak ASC
staryadam60
I Wielkie Dzięki za pomoc. Działa tak jak potrzebuję.
Mam dopiero 68 lat a nauka idzie mi strasznie wolno graduated.gif

Jeszcze raz Dziękuję Bardzo.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.