|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : avril 2011 Messages : 8 ![]() |
Bonjour,
J'ai ma table de base (tablea) sur laquelle je fais plusieurs jointures. Sur les tables jointes, je fais aussi des jointures. Mes critères de sélection de base me ramènent plusieurs lignes avec des dates différentes. Je souhaite récupérer les données de ma tablea pour la date la plus grande. J'ai donc créé une requête de ce type : Code :
Quelqu'un peut-il m'aider ? S'il y a un autre moyen (select imbriqué par exemple) je peux reconstruire ma requête avec vos conseils, ce n'est pas un problème. D'avance merci. |
||
|
|
00
|
|
|
#2 | |||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Votre requête vous renvoi la date MAX pour chaque combinaison a/b/c/d/e/f/g/h distincte. que voulez-vous obtenir exactement ? Citation:
Code SQL :
Si vous voulez effectuer cette opération en agrégeant vos données (GROUP BY), passez plutot par une jointure sur une pseudo table sélectionnant le max par agrégat Code SQL :
|
|||||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 8 ![]() |
Merci de votre réponse, mais ce n'est pas ce que je cherche à faire (manque de détails de ma part, mais quand on est la tête dans son truc ...).
Pour être plus clair, je vais donner la structure globale des données : La tablea est une table client avec toutes les informations (nom, prénom, adresse...) Les tables en jointure permettent de récupérer d'autres informations sur les clients. Dans la tablea, j'ai plusieurs fois le même client mais à des dates différentes. Pour chaque client, je voudrais sélectionner la ligne de la tablea avec la date la plus grande sachant que cette date doit être supérieure à 20100101. Attention, pour un client s'il y a des lignes avec des dates inférieures et des dates supérieures à 20100101, je souhaite récupérer l'information. Je ne récupère pas les informations client si toutes les lignes ont une date inférieure. Pour un client, la jointure avec les autres tables doit se faire sur une seul et unique ligne de ma tablea. Bien sur tout ça en une seule et unique requête J'espère avoir donné suffisament de détails. Merci pour tout. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 8 ![]() |
Pour que l'on se comprenne :
Si j'avais pu décomposé la requête en plusieurs requêtes, j'aurai fait : - Récupération de toutes les lignes de la tablea avec une date (DayDate)supérieure à 20100101 : pour certains clients j'aurai encore eu plusieurs lignes par numéro de client. Cette étape m'aurai donné un fichier 1. - Suppression des doublons du fichier 1 : une ligne par client (nom/prénom/adresse), je garde les lignes avec la date la plus récente. Cette étape m'aurait donné un fichier 2 avec mes données de base propre. - Jointure avec les autres tables pour récupérer les données manquantes et enrichir le fichier 2. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 8 ![]() |
Merci pour tout, je viens de trouver la solution à mon problème.
J'ai utilisé une partie de ce que vous m'avez indiqué aieeuuuu (désolé s'il manque des e ou des u J'ai fait un select distinct sur mes données, ensuite codé mes jointures et pour la clause where : where exists (select max(DayDate),mes données) and les autres conditions. Encore merci. |
|
|
00
|
|
|
#7 | |||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
La liste des clients, avec la date Max sauf date antérieures au 2010-01-01: Code SQL :
les autres colonnes de la tablea pour chaque client, à la date Max Code SQL :
Vous pouvez ensuite ajouter les jointures pour les autres tables |
|||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com