|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 57 ![]() |
Bonjour,
j'ai 2 tables, dont voici un extrait (suffisant pour faire des tests) : Code :
Pour une sell_offers.sell_id donnée, je souhaite récupérer : - les sell_nights.date MIN et MAX (ça, aucun problème). - une nouvelle date MAX, calculée en ajoutant à MAX(sell_nights.date) la sell_offers.length MAX (qui est en fait un nombre de jours) Voici ma requête actuelle : Code :
Code :
Code :
MAX(DATE_ADD(max_date, INTERVAL max_length DAY)) AS max_end_date Une idée de comment récupérer cette fameuse max_end_date, équivalente à max_date + length DAYS ? |
||||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Je pense que la requete que vous avez postée n'est pas celle qui fonctionne, mais celle qui ne fonctionne pas vous ne pouvez pas reprendre les alias pour votre calcul, mais devez faire ainsi : Code SQL :
Cela dit, je pense que vous avez aussi un problème de logique dans votre requête... Vous prenez d'une part la Date la plus élevée, d'autre part la durée la plus longue... Lorsque vous ajoutez celle-ci à celle-là, elles n'ont a priori aucun lien entre-elles... Que cherchez vous a obtenir comme résultat ? |
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 57 ![]() |
Pour simplifier les choses, on va laisser de côté l'histoire de la date MIN, et focus la date MAX.
disons que j'ai 2 Offres Offre 1 : - la date MAX des sell_nights qui lui sont liées est le 03/06/2011. - la durée du séjour de l'offre est de 2 nuits. - on a donc une date (de retour) MAX qui vaut 05/06/2011 Offre 2 : - la date MAX des sell_nights qui lui sont liées est le 01/06/2011. - la durée du séjour de l'offre est de 7 nuits. - on a donc une date (de retour) MAX qui vaut 08/06/2011 Grâce à ma requête, j'aimerai que cela soit la date (de retour) de l'offre 2 qui soit sélectionnée, puisque c'est elle la date (de retour) MAX entre les 2. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
pour trouver la date de retour la plus tardive :
Code SQL :
|
||
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 57 ![]() |
Super ! une petite parenthèse manquante, mais ça marche nickel sinon.
Du coup je viens de fusionner cette requête avec la requête pour la date MIN, et c'est parfait, je récupère les bonnes dates : Code :
SELECT MIN(MIN_NIGHTS.date) AS min_date, MAX(DATE_ADD(MAX_NIGHTS.date, INTERVAL OFFERS_MAX.length DAY)) AS max_date FROM sell_nights MIN_NIGHTS, sell_offers MIN_OFFERS, sell_nights MAX_NIGHTS INNER JOIN sell_offers OFFERS_MAX ON MAX_NIGHTS.sell_offer_id = OFFERS_MAX.id AND OFFERS_MAX.sell_id = 65 WHERE MIN_NIGHTS.date >= CURDATE() AND MIN_NIGHTS.sell_offer_id = MIN_OFFERS.id AND MIN_OFFERS.sell_id = 65 AND MAX_NIGHTS.date >= CURDATE() Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com