|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre actif
![]() |
Bonjour,
j'ai une requete à faire qui consiste à récupérer le numéro des clients qui n'ont pas passé commande depuis plus de 30 jours. J'ai donc fait ceci.. Code :
A votre avis, ma requete est elle correcte ou y-a t-il plus simple ? Merci beaucoup |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Je ne vois pas, à part dégrader les performances, à quoi peut bien te servir la sous-requête La requête suivante ne suffit-elle pas : Code :
__________________
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
|
|
|
#3 |
![]() ![]() |
Euh... c'est normal que tu cherches des clients qui n'ont pas passé commande et tu interroges une table factures ?
__________________
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
|
|
|
#4 |
|
Membre actif
![]() |
|
|
|
00
|
|
|
#5 | |||
|
Membre actif
![]() |
Citation:
Eh bien si je fais ce que tu me dis, j'ai bien les numClients des personnes qui n'ont pas commandé depuis 30 jours mais rien ne me dit que ces memes clients n'ont pas passé une autre commande il y a moins de 30 jours. Ils peuvent très bien avoir passé une commande hier et une autre il y a plus de 30 jours. Et moi je veux trouver tout ceux inactifs depuis 30 jours. En espérant avoir été clair.. Merci |
|||
|
|
00
|
|
|
#6 | ||
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
peut etre comme ceci (à tester)
Code :
|
||
|
|
00
|
|
|
#7 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
C'est plus clair... Effectivement, c'est logique
Donc, ce qui dégrade les performances de ta requête, c'est la sous-requête. Avec de grosses tables, dans MySQL, les sous-requêtes se dégradent rapidement... Donc, tu peux très bien réécrire ta première requête en passant par une jointure externe, dont les performances seront sans doute meilleures : Code :
__________________
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
|
|
|
#8 | |||
|
Membre actif
![]() |
Citation:
Ced, c'est vrai j'avais oublié cette technique, mais curieusement elle est encore plus longue que ma requete imbriquée ! |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com