[ weleb @ 10.06.2014. 19:16 ] @
Pomoću upita želim saznati koji su članovi aktivni a koji ne. Uvijet da je član aktivan je da je datumDo (tipa date) veći ili jednak CURDATE.

Napravio sam upit kada se provjerava aktivnost pojedinačnog člana i on izgleda ovako:

Code:

SELECT * FROM tblClanstvo WHERE idClana ='.$id.' AND datumDo>=CURDATE() AND datumDo =(SELECT MAX(datumDo)FROM tblClanstvo WHERE idClana ='.$id.'


Gore napisani upit radi i odrađuje posao kako treba.

No nastaje problem kada želim kreirati tj ispisati SVE aktivne članove koji zadovoljavaju gore spomenuti uvijet (datumDo (tipa date) veći ili jednak CURDATE).

Upit koji sam ja kreirao vrati mi sve aktivne članove no ne vrati mi najveći datumDo što bi trebao.

Upit:

Code:

SELECT * FROM tblClanovi JOIN tblClanstvo ON tblClanovi.idtblClanovi=tblClanstvo.idClana WHERE datumDo>=CURDATE() GROUP BY idClana HAVING MAX(datumDo)


Povezao sam dvije tablice jer trebam ispisati podatke o članu...kako riješiti to da mi vrati stvarno najveću vrijednost da datumDo
[ Predrag Supurovic @ 10.06.2014. 22:16 ] @
probaj HAVING datumDo= MAX(datumDo)
[ weleb @ 11.06.2014. 08:50 ] @
Opet ništa :(
[ dusans @ 11.06.2014. 09:37 ] @
Code:

SELECT * FROM tblClanovi T1
LEFT JOIN (SELECT idClana, MAX(datumDo) AS datumDo
                 FROM tblClanstvo
                 GROUP BY idClana) AS T2
ON T1.idClana = T2.idClana
WHERE  T2.datumDo>=CURDATE()


Ne radim u MySql-u, možda ima nekih sintaksnih grešaka.
Problem može da se reši na više načina:
- Korelisanim upitom
- Grupisanjem u samom upitu + having
- Grupisanjem u join-u (ovaj primer)

Predlažem ti da proučiš SQL pošto su ovo relativno
prosti upiti i trebao bi da ih pišeš bez problema
ako se baviš developmentom.
[ weleb @ 11.06.2014. 12:20 ] @
Hvala, to je to :)

Da, upit je jednostavan no nisam dugo radio sa SQL-om pa sam malo zahrđao... :)