Topic: GROUP by ir ORDER by
Tikslas yra išdėstyti naujausias nuotraukas, mažėjančia tvarka pagal naujumą, bet kad nesikartotų tie patys dalyviai.
Tarkime, Jonas ir Petras atsiuntė po 10 nuotraukų, bet sąraše "Naujos foto" turi matytis tik dvi foto - naujausia Jono foto ir naujausia Petro foto. Ta, foto, kuri buvo atsiusta veliau (tai yra, kurios id didesnis) turi buti pirma.
ši užklausa veikia gerai:
select max(id) maxid, kieno from foto where statusas='0' or statusas='2' group by kieno order by maxid desc limit 50
Tačiau man reikia duomenų ir iš dalyvio lentelės, todėl aš mėginu taip:
select dalyviai.id, dalyviai.vardas, dalyviai.gimdata, max(foto.id) maxid, foto.failas from dalyviai, foto where dalyviai.id=foto.kieno and (foto.statusas='0' or foto.statusas='2') group by foto.kieno order by maxid desc limit 50
Bet antrosios užklausos rezultatai jau nesutampa su pirmosios. Lengviausias sprendimas būtų ciklo viduje rašyti antrą užklausą, kuri paimtų dalyvio duomenis. Bet norisi visa tai padaryti vienoje užklausoje. Ką darau ne taip? Dėkoju už atsakymą.