Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ jak wyfiltrować towary z ostatnią datą zakupu

Napisany przez: staryadam60 16.06.2020, 11:13:12

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

Napisany przez: mmmmmmm 17.06.2020, 11:21:25

  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

Napisany przez: staryadam60 17.06.2020, 15:04:54

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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)