[gull] Question SQL: créer des comparatif

Félix Hauri felix at f-hauri.ch
Mon May 14 13:25:08 CEST 2007


On Sun, May 13, 2007 at 01:40:42PM +0200, Amel Kapetanovic wrote:
> Salut,
> 
> Je m'y prendrais du genre (non testé, SQL2) :
> 
> SELECT S.Commerce, S.Prix
> FROM   Sondage S
> WHERE  S.Marchandise = Id_choisi AND
>       S.Date IN (
>         SELECT MAX(T.Date)
>         FROM   Sondage T
>         WHERE  S.Commerce    = T.Commerce AND
>                S.Marchandise = T.Marchandise
>       )
> ;
Hmm. oui, jusque là, j'étais arrivé;-)
(ou par une table temporaire comme proposé par Martial)

> 
> Remarquons qu'on est ennuyé si il y a >1 date max par (Commerce, 
> Marchandise) dans Sondage
Cela ne risque pas: on ne va pas sonder deux fois le même magasin
dans la même journée...

(au pire en ajoutant ``ORDER BY Id DESC LIMIT 1'' avant
 la fermeture de parenthèse, voire en se basant sur Id qui
 est nécessairement unique et tant que ORDER by Id ne
 peut pas contredire ORDER by date... ;)

En fait, j'aimerais arriver à préparer un truc du style:

SELECT Marchandise.descr, Prix(Commerce_1,MAX(Date)),
    Prix(Commerce_...,MAX(Date)), Prix(Commerce_n,MAX(Date))
  FROM My database...
  ... ORDER BY Marchandise.descr

Pour obtenir qqch comme:
``Comparaison en date du: $date
  Marchandise       | Coop    | Migros  | Denner   | ...
  ------------------+---------+---------+----------+--
  Chocolat au lait  |    12.- |    12.- |     12.- |...
  Mouton Rotschild  |   120.- |   120.- |    120.- |...
  ...                                                     ''

> Félix Hauri a écrit :
> > ...
> >J'aimerais réaliser une table temporaire, présentant de la sorte:
> >
> >- Comparaison:
> >Marchandise Id(Marchandise)
> >Commerce_1   Prix (Marchandise, Commerce_1, selon dernier sondage)
> >Commerce_... Prix (Marchandise, Commerce_..., selon dernier sondage)
> >Commerce_n   Prix (Marchandise, Commerce_n, selon dernier sondage)

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch



More information about the gull mailing list