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