Help select mysql

Fermé
cyril92 - 19 janv. 2012 à 22:07
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 20 janv. 2012 à 14:54
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 vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 janv. 2012 à 09:46
Salut,
Postes nous d'abord l'ébauche de ta requête, et on pourrait l'améliorer ;)
0
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 vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 janv. 2012 à 11:13
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
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
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
et surtout d'aun fait cela ne fonctionne pas correctement ;-)

help me please...
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 janv. 2012 à 13:49
Mettre le max dans ton select de départ.
0
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 vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 janv. 2012 à 14:54
et un group by id_btik ?
0