Help select mysql

cyril92 -  
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai quelques soucis pour arriver à faire un select correct

j'ai deux tables : une table boutique et une table offre

offre:
id_btik | id_offre | libelle | date_ajout | heure_ajout
1 | 1 |monoffre1 | 21012-10-01 | 16:00:00
2 | 2 |monoffre2 | 21012-10-02 | 16:30:00
2 | 3 |monoffre3 | 21012-10-05 | 17:00:00
3 | 4 |monoffre4 | 21012-10-06 | 18:00:00

btik
id_btik | nom
1 | btik1
2 | btik2
3 | btik3

je voudrais obtenir la liste des toutes les offres triées par date,heure desc et dans le cas ou une boutique aurait plus d'une offre je ne voudrais avoir que la dernière offre de cette boutique soit ici :

id_btik | id_offre | libelle | date_ajout | heure_ajout | nom
3 | 4 |monoffre4 | 21012-10-06 | 18:00:00|btik3
2 | 3 |monoffre3 | 21012-10-05 | 17:00:00|btik2
1 | 1 |monoffre1 | 21012-10-01 | 16:00:00|btik1

Je seche.... quelqu'un pour m'aider ?

Meri par avance












5 réponses

Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
Salut,
Postes nous d'abord l'ébauche de ta requête, et on pourrait l'améliorer ;)
0
cyril92
 
Bonjour, merci de ta réponse ;-)

Alors voici où j'en suis :

SELECT
btiks.id_btik,
offres.id_offre,
offres.libelle,
offres.date_ajout,
offres.heure_ajout,
btiks.nom

FROM offre offres,btik btiks

where offre.id_btik=btik.id_btik order by offre.date_ajout desc,
offre.heure_ajout desc


J'ai essayé d'ajouter un group by,plusieurs tentatives infructueuses..... pour ne ressortir que id_offre = 3 pour la boutik 2...mais je n'y arrive pas.


Merci
0
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
Si tu veux la dernière offre de la boutique, regarde du côté de MAX :
SELECT MAX(date_ajout)

Il est censé te prendre la date la plus élevée.
0
cyril92
 
Merci mais j'ai sans doute mal compris tes conseils...

SELECT
btiks.id_btik,
offres.id_offre,
offres.libelle,
MAX(offres.date_ajout),
offres.heure_ajout,
btiks.nom

FROM offre offres,btik btiks

where offres.id_btik=btiks.id_btik order by offres.date_ajout desc,
offres.heure_ajout desc

Il ne ne retourne qu'un seul enregistrement...
id_btik id_offre libelle MAX(offres.date_ajout) heure_ajout nom
1 1 monoffre1 2012-10-06 16:00:00 btik1
0
cyril92
 
Je pense que j'ai trouvé..


SELECT
btiks.id_btik,
offres.id_offre,
offres.libelle,
offres.date_ajout,
offres.heure_ajout,
btiks.nom

FROM offre offres,btik btiks

where offres.id_btik=btiks.id_btik
and concat(offres.date_ajout, offres.heure_ajout) in (select concat(max(date_ajout), max(heure_ajout)) from offre group by id_btik)

order by offres.date_ajout desc,
offres.heure_ajout desc

mais il y a surement bcp plus simple
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cyril92
 
et surtout d'aun fait cela ne fonctionne pas correctement ;-)

help me please...
0
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
Mettre le max dans ton select de départ.
0
cyril92
 
SELECT
btiks.id_btik,
offres.id_offre,
offres.libelle,
MAX(offres.date_ajout),
offres.heure_ajout,
btiks.nom

FROM offre offres,btik btiks

where offres.id_btik=btiks.id_btik order by offres.date_ajout desc,
offres.heure_ajout desc

Il ne ne retourne qu'un seul enregistrement...
id_btik id_offre libelle MAX(offres.date_ajout) heure_ajout nom
1 1 monoffre1 2012-10-06 16:00:00 btik1
0
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
et un group by id_btik ?
0