IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Eviter DISTINCT avec sous-requete


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 88
    Points
    88
    Par défaut Eviter DISTINCT avec sous-requete
    Salut a tous,

    Depuis quelques jours j'essaye de me mettre aux JOINs et je me retrouve un peu confus.

    En ce moment je suis sur une requete me permettant de retourner les commandes dont les factures n'ont pas toutes etaient envoyee (il peut y avoir plusieurs factures par commande).
    J'ai realise la requete suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
    T_O1.fld_id AS id
    FROM tbl_epc_orders AS T_O1
    	INNER JOIN tbl_epc_orders_payments AS T_OP1
    		ON T_O1.cal_total_invoiced !=
    			(SELECT SUM(T_OP2.cal_total_invoiced)
    			FROM tbl_epc_orders_payments T_OP2
    			WHERE T_OP2.fld_epc_orders_id = T_O1.fld_id)
    Elle me donne les bons resultats mais donne chaque resultat 332 fois, ce qui correspond au nombre total de factures dans la base de donnee.
    Je me retrouve avec presque 6000 resultats alors que je devrais en avoir qu'une vingtaine.

    Je peux facilement reduire le nombre de resultats en faisant un SELECT DISTINCT mais je pense qu'il est possible de reduire en jouant sur les JOINs et la sous-requete. Mais je ne trouve pas la solution

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    La table tbl_epc_orders_payments n'est pas utilisée par la requête ! A-t-elle un intérêt ?

    Sinon, elle pourrait s'écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  T_O1.fld_id AS id
    FROM    tbl_epc_orders AS T_O1
    WHERE   EXISTS
            (   SELECT  1
                FROM    tbl_epc_orders_payments T_OP2
                WHERE   T_OP2.fld_epc_orders_id = T_O1.fld_id
                HAVING  T_O1.cal_total_invoiced != SUM(T_OP2.cal_total_invoiced)
            )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 88
    Points
    88
    Par défaut
    A beh juste quand j'essaye d'utiliser les JOINs, je tombe sur une requete qui n'en demande pas

    Ta requete fonctionne exactement comme je voulais!

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete Update avec sous requete et jointure
    Par javaboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/05/2007, 11h03
  2. Requete Update avec sous requete
    Par joziel dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/08/2006, 15h15
  3. problème update avec sous requetes
    Par stoz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 16h44
  4. Optimisation requete avec sous-requetes multiples
    Par gege.boubou dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h42
  5. INTERBASE: DELETE avec sous requete conditionnelle
    Par Papino dans le forum InterBase
    Réponses: 6
    Dernier message: 17/02/2005, 22h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo