|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Bonjour,
Sous SQL 2000, j'essaie de faire une requête pour obtenir la liste par clients, par article, du dernier prix de vente sur certains documents. (cbmarq étant un incrément de la base) exemple de ce que je veux obtenir : Citation:
Code :
Et bien devinez quoi, je poste parce que je n'arrive pas au bon résultat ![]() Cela me donne des lignes en doublons sur l'article. Exemple: Citation:
Citation:
En ce jour de dimanche, y aurait-il une bonne âme pour me guider sur les routes de notre seigneur SQL ?? Merci d'avance |
|||||
|
|
00
|
|
|
#2 | |||||
![]() ![]() |
Citation:
Si c'est la cas, pourquoi ne pas faire simplement la jointure uniquement sur lui ? Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||
|
00
|
|
|
#3 | |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
bonjour,
merci pour tes propositions. Mon champ cbMarq est un compteur unique non null. J'ai essayé tes 2 propositions mais j'ai toujours mes doublons. Voici un extrait du résultat : Les 2 lignes en rouge me posent pb, je n'en vuex qu'une seule, uniquement celle qui a le cbMarq le plus gd car l'article est en doublon (0674908000) Citation:
Une autre idée ? Merci |
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 629 ![]() |
Bonjour,
L'idée générale de la requête étant bonne, êtes vous sur que le group by est le bon ? Si vous exécutez seulement la sous-requête avez-vous votre doublons qui ressort ? |
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Ma seconde requête regroupe par CT_num et AR_ref et donne le MAX(cbMarq). Il n'est donc aps logique que tu obtiennes deux cbMarq (560349 et 295102) pour le même couple {CT_Num, AR_Ref} (C1007 et 0674908000) !
Et puisque cbMarq est bien unique dans la table, la condition de jointure peut être simplifiée : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 629 ![]() |
Euh dans ton group by, tu as spécifié DO_Domaine et DO_Type c'est pas ca le problème ?
edit: en fait c'est bien ca le problème car dans l'exemple cité, on voit que pour les doublons ces 2 valeurs sont différentes. |
|
|
00
|
|
|
#7 |
![]() ![]() |
Exact ! Oubli de suppression suite au copier/coller de la première requête !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#8 | ||
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Merci beaucoup cela marche mieux !
Toutefois, j'ai voulu peaufiner un peu en ajoutant des filtres pour finalement n'avoir que le dernier prix de vente de certains types de documents : m.DO_Type = 1, 3, 6 ou 7 Code :
Mais sur ce test, j'obtenais enfin qu'1 seule ligne...maintenant j'en obtiens 4. Je suppose que je place mal mes m.DO_Type = Est-ce que vous savez comment je peux obtenir le même résultat mais avec mes 4 critères en + ? |
||
|
|
00
|
|
|
#9 | ||
![]() ![]() |
On vient de te dire que DO_Type et Do_domaine ne devraient pas être dans le GROUP BY mais tu les y laisses ! Normal que tu récupères de nouveau des doublons !
Et ton WHERE peut être énormément simplifié : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#10 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 630 ![]() |
Je n'ai même pas réalisé que j'avais remis ces 2 champs !!!
En tout cas, un grand merci, j'obtiens enfin la bonne information C'est génial A+ Merci à vous tous
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com