Select v MySql
Honza Pazdziora
adelton na informatics.muni.cz
Středa Listopad 21 09:59:15 CET 2001
On Wed, Nov 21, 2001 at 09:44:36AM +0100, Karel Zak wrote:
> On Wed, Nov 21, 2001 at 08:57:13AM +0100, Jirka K. wrote:
> > SELECT c_prod.id_prod, c_prod.nazov, c_ver.verzia FROM c_prod, c_ver WHERE
> > c_ver .verzia=(SELECT c_ver.verzia, c_ver.datum FROM c_ver, c_prod WHERE
> > c_ver.id_prod=c_prod.id_prod ORDER BY verzia DESC LIMIT 1,1)
> > AND c_ver.id_prod=c_prod.id_prod
> >
>
> Vy to mate rad slozite a pomalu, coz? :-)
>
>
> Je to typicka ukazka pouziti GROUP BY:
>
> SELECT p.nazov, v.datum, max(v.verzia)
> FROM c_ver v, c_prod p
> WHERE v.id_prod=p.id_prod
> GROUP BY p.nazov, v.datum;
No nevim. Zadani pozaduje
> > > id_prod nazov
> > > 01 nazov1
> > > id_prod verzia datum
> > > 01 1.70 12.12.2001
> > > 01 1.74 13.12.2001
> > > Potrebujem vybrat vsetky produkty iba raz a to s najvyssou verziou a knej
> > > prisluchajuci datum
> > > id_prod nazov verzia datum
> > > 01 nazov1 1.80 13.10.2001
A tenhle group by vrati
nazov1 12.12.2001 1.70
nazov1 13.12.2001 1.74
protoze pro dany produkt a dane datum vrati maximalni verzi, coz by
melo vyznam treba pro zadani
01 1.70 12.12.2001
01 1.74 12.12.2001
ale puvodni pozadavek smeruje na to, ze se ma pro dany produkt najit
nejvyssi verze (1.74) a k ni jeji datum (13.12.2001).
Obavam se, ze tohle cistym group by neudelate.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, DBI, Oracle, MySQL, auth. WWW servers, DBD::XBase.
------------------------------------------------------------------------
Další informace o konferenci Databases