MySQL : jointure de requêtes asymétriques
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

MySQL : jointure de requêtes asymétriques



  1. #1
    cherbe

    MySQL : jointure de requêtes asymétriques


    ------

    Bonjour
    J'ai une table factures_émises et une table factures_réglées. Pour diverses raisons trop longues à expliquer ici, je ne peux pas fusionner ces 2 tables.

    factures_émises contient une colonne num_facture et une colonne montant ;
    factures_réglées contient une colonne num_facture et une colonne règlement
    les numéros de factures sont bien entendu identiques dans les 2 tables. Les règlements de la 2e table peuvent être partiels.

    Le but des requêtes est de rechercher les impayés (factures émises et non réglées) et à l'instant T, il y en a toujours.
    L'idée et de faire 2 requêtes, une sur chaque table, et de les joindre ensuite mais comme elles sont de tailles différentes, je n'y arrive pas.

    Mission impossible ?

    -----

  2. #2
    hysos

    Re : MySQL : jointure de requêtes asymétriques

    une solution une solution parmi tant d'autres:

    select factures_emises.numero,facture s_emises.montant from factures_emises where factures_emises.numero not in ( select factures_reglees.numero from factures_reglees);

  3. #3
    cherbe

    Re : MySQL : jointure de requêtes asymétriques

    Citation Envoyé par hysos Voir le message
    une solution une solution parmi tant d'autres:
    Bonjour
    Ca fonctionne et ça me donne les résultats attendus.
    Merci beaucoup.
    Je me suis obstiné à faire 2 requêtes séparées et à vouloir les joindre ensuite, sans penser à cette approche.

    Pour revenir à la jointure asymétrique, c'est vraiment impossible ?
    Dans le passé, je faisais des requêtes SQL dans le progiciel SAS. C'est loin et ma mémoire peut être défaillante mais il me semble bien que l'instruction merge (peut-être propre à SAS ?) fonctionnait avec des requêtes dont le nombre de lignes différait.

  4. #4
    Bluedeep

    Re : MySQL : jointure de requêtes asymétriques

    Bonjour
    Citation Envoyé par cherbe Voir le message
    Pour revenir à la jointure asymétrique, c'est vraiment impossible ?
    Code:
    select fe.numero,fe.montant 
    from factures_emises fe 
    right outer join factures_reglees fr 
    on fe.numero = fr.numero 
    where fr.numero is null;
    Dans le passé, je faisais des requêtes SQL dans le progiciel SAS. C'est loin et ma mémoire peut être défaillante mais il me semble bien que l'instruction merge (peut-être propre à SAS ?) fonctionnait avec des requêtes dont le nombre de lignes différait.
    Alors l'instruction MERGE existe bien en SQL (norme SQL:2003, précisée et étendue en SQL:2008) mais je ne suis pas sur du tout que son implémentation dans SAS est bien celle de la norme SQL car son but est exclusivement de fusionner des tables en évitant des ordres INSERT, UPDATE, DELETE.

  5. A voir en vidéo sur Futura
  6. #5
    cherbe

    Re : MySQL : jointure de requêtes asymétriques

    [QUOTE=Bluedeep;5163121]Bonjour
    Code:
    select fe.numero,fe.montant 
    from factures_emises fe 
    right outer join factures_reglees fr 
    on fe.numero = fr.numero 
    where fr.numero is null;
    Je ne comprends pas ce que représentent fe et fr. Ce sont des identifiants temporaires ?

  7. #6
    Bluedeep

    Re : MySQL : jointure de requêtes asymétriques

    Citation Envoyé par cherbe Voir le message
    Je ne comprends pas ce que représentent fe et fr. Ce sont des identifiants temporaires ?
    Non, simplement des alias.

    Ca évite la répétition dans la requête de noms de tables potentiellement long en particulier lors de requêtes "cross schema", et c'est même obligatoire lorsque dans une requête tu as une autojointure ou deux jointures sur deux champs de la même table.

    De facto, et par convention, on utilise toujours des alias lors des requêtes avec jointure : ça facilite la lecture.

    Cela n'a strictement aucun impact sur le plan d'exécution.
    Dernière modification par Bluedeep ; 19/03/2015 à 10h41.

Discussions similaires

  1. jointure mysql probleme
    Par invitec7fd8fb0 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 04/09/2011, 21h53
  2. Jointure mur de pierre / mur de placo
    Par sameomy dans le forum Bricolage et décoration
    Réponses: 3
    Dernier message: 06/05/2010, 07h44
  3. Requêtes USB
    Par inviteaef6c0b2 dans le forum Électronique
    Réponses: 7
    Dernier message: 19/11/2008, 13h35
  4. Jointure semantique SQL connect
    Par invite0f3760c9 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 27/04/2008, 12h38
  5. Taille table MySQL : ralentit les requêtes?
    Par lignux dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 11/01/2007, 17h33