Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1229 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL/Access] problème pour une requête en apparence assez simple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL/Access] problème pour une requête en apparence assez simple

n°1491017
ze nerdz
gné ?
Posté le 13-12-2006 à 19:50:13  profilanswer
 

Bonjour à tous,
 
Je suis dans une impasse pour une requête SQL sous Access, peut etre allez vous pouvoir me débloquer :)
Je vous expose mon problème :
 

Code :
  1. TABLE Commande
  2. client  descriptionProduit prixProduit
  3. --------------------------------------------------------------------------------------
  4. 1   "produit 1"   10
  5. 1   "produit 2"   5
  6. 1   "produit 3"   40
  7. 2   "produit 2"   5
  8. 2   "produit 1"   10


 
Comment récupérer, pour chaque client, le prix et la description du produit le moins cher, et le prix et la description du produit le plus cher
 
En l'occurrence, le résultat attendu avec cette requête doit être :
 
client     descriptionProduitMoinsCher      prixProduitMoinsCher     descriptionProduitPlusCher      prixProduitPlusCher  
1                     produit 2                                 5                                  produit 3                       40
2                     produit 2                                 5                                  produit 1                       10
 
 
j'ai déja cette requête qui marche :
 

Code :
  1. SELECT DISTINCT c1.client, c1.descriptionProduit, c1.prixProduit, c2.descriptionProduit, c2.prixProduit
  2. FROM commande AS c1, commande AS c2
  3. WHERE c1.prixProduit =( 
  4. SELECT MIN(c.prixProduit)
  5. FROM commande c
  6. WHERE c1.client = c.client
  7. )
  8. AND c2.prixProduit =( 
  9. SELECT MAX(c.prixProduit)
  10. FROM commande c
  11. WHERE c1.client = c.client
  12. );


 
masi a cause des requêtes imbriquées, lorsque j'atteint les grosses quantités d'enregistrements, ca ne passe plus, la requete n'en fini plus ...
 
 
Merci d'avance !


Message édité par ze nerdz le 13-12-2006 à 19:50:48
mood
Publicité
Posté le 13-12-2006 à 19:50:13  profilanswer
 

n°1491393
olivthill
Posté le 14-12-2006 à 15:26:37  profilanswer
 

Pour améliorer le temps de traitement, il existe plusieurs solutions :
 
- supprimer le "DISTINCT'
- divisier la requête en plusieurs parties, par exemple rechercher d'abord les prix maximums puis les prix minimums
- indexer tous les champs qui servent à la sélection
- changer la structure des tables, en ajoutant un champ prix_max et un champ prix_min, qui seraient remplis lors de l'enregistrement des prix ; l'insertion ou la mise à jour serait un tout petit peu moins rapide, mais la selection serait beaucoup plus rapide.

n°1491563
casimimir
Posté le 14-12-2006 à 21:15:48  profilanswer
 

je peux me gourrer mais ce ne serait pas plutot:
 

Code :
  1. SELECT DISTINCT c1.client, c1.descriptionProduit, c1.prixProduit, c2.descriptionProduit, c2.prixProduit
  2. FROM commande AS c1, commande AS c2
  3. WHERE c1.prixProduit =( SELECT MIN(c.prixProduit)   
  4.                                  FROM commande c   
  5.                                  WHERE c1.client = c.client)
  6. AND c2.prixProduit =(SELECT MAX(c.prixProduit)   
  7.                             FROM commande c   
  8.                             WHERE c2.client = c.client)
  9. and c1.client=c2.client;


 
et mets juste un index sur client


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL/Access] problème pour une requête en apparence assez simple

 

Sujets relatifs
Probleme Urgent C tableau a deux dimensionsProblème expression régulière !
Est il possible d'importer un "etat" ou "requète" d'access sous VB6 ??[Access] exporter un formulaire dans une "bibliothèque" externe
[PHP] créer une possibilté d'identification SQL/PHP[batch] problème de droits d'utilisateur
Problème de codage d'une chaine de caractèreProblème code CSS et image<< URGENT svp
Probleme lecteur XSPF 
Plus de sujets relatifs à : [SQL/Access] problème pour une requête en apparence assez simple


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR