|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2004 Messages : 21 ![]() |
Bonjour à tous,
ci dessous, le shéma utilisé : et là, la requête que je tente d'executer : Code :
J'imagine que ce sont mes jointures qui merdouillent mais je sèche ... Merci de votre aide ! |
||
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : août 2004 Messages : 21 ![]() |
Bon la solution semble se préciser, il me faut utiliser des requêtes imbriquées, mais ca dépasse de loin mes maigres compétences en sql ... si quelqu'un peut m'aider ?!?
|
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Plutôt que de nous donner la requête que tu tentes et qui ne fonctionne visiblement pas comme tu veux, si tu nous disais plutôt ce que tu souhaites obtenir ? Un petit jeu de données et le résultat attendu nous permettraient sans doute de mieux t'aider...
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#4 | ||||||||||
|
Invité de passage
![]() Inscription : août 2004 Messages : 21 ![]() |
au temps pour moi !
je vais essayer de décrire cela de la manière la plus simple possible. Pour chaque débiteur, je souhaite récupérer - la plus petite date d'entrée de l'ensemble de ses dossiers (doss_dateentree) - la somme totale de ses factures impayées (fac_montant) - la somme totale de ses paiements (pai_montant) - la date de son dernier règlement (pai_date) - le nombre de paiements effectués par ce debiteur Table Debiteurs Code :
Code :
Code :
Code :
Code :
|
||||||||||
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
OK, on y voit plus clair à présent.
Plutôt que d'utiliser des requêtes imbriquées et des sous-requêtes corrélées (ce qui va très vite dégrader les performances sous MySQL), et vu que MySQL ne dispose ni des fonctions de fenêtrage, ni des CTE, je te conseille plutôt de passer par des tables temporaires... Le plus compliqué, dans l'histoire, ce sont les conditions du genre "la plus petite date d'entrée de l'ensemble de ses dossiers". Voici une requête (parmi d'autres) qui permet d'obtenir cela : Code :
Tu fais la même chose pour "la date de son dernier règlement". Enfin, tu croises ces 2 tables temporaires par jointure, et tu calcules les sommes qui restent à faire... Désolé, mais MySQL est trop limité pour faire ça en une requête qui puisse garder ensuite des performances correctes...
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : août 2004 Messages : 21 ![]() |
Merci pour ta réponse.
Voila ce qu'on me propose par ailleurs : Code :
Qu'en penses tu ? |
||
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Oui, ça fonctionne très bien
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com