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 MySQL Discussion :

palier les requetes imbriquées


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut palier les requetes imbriquées
    j'ai bien suivi les autres messages sur les jointures.
    mais là un simple left join avec l'id = null ne me suffit pas.

    comment fait-on quand on veut à la fois les champs qui ne se trouvent pas dans une 2e table et ceux qui s'y trouvent sous une certaine condition ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    TABLE_1 
    * id_t1 * champs_t1 * 
    * 1     * AA        * 
    * 2     * BB        * 
    * 3     * CC        * 
    * 4     * DD        * 
    * 5     * EE        * 
    ********************* 
     
    TABLE_2 
    *id_t2 * liaison_t1 * champs_t2 * 
    * 1    * 2          * NULL      * 
    * 2    * 3          * flo       * 
    * 3    * 4          * NULL      * 
    *********************************
    donc dans cet exemple je veux tout ce qui n'est pas dans la table 2 ET ceux qui y sont mais dont le champt_t2 est null...
    j'avoue j'ai du mal avec les jointures, quelqu'un pourrait m'aider ?
    merci d'avance...

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Tu peux utiliser une "union" dans ce cas là, peut-être y-a-t'il une solution pour avoir les éléments dans une même requête, mais j'ai l'impression que ça serait plus compliqué et moins lisible ( et pas forcément plus performant )

    Voici la documentation associée.

  3. #3
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    oh bah mince...
    je pensais que l'union etait une "variété" d'imbrication !
    ok merci beaucoup !

  4. #4
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    toc toc toc, j'ai oublié une indication de taille : je suis sous un mysql 3.2xxxx ...
    l'union est bien une imbrication...
    il me faut absolument une même requete, car j'ai une pagination à faire, donc des limit à gérer...

  5. #5
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    mysql 3.2 permet-il de faire des sous requêtes dans la clause WHERE ?

    Si oui, tu pourrais aussi faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM table_1
    WHERE 
       id_t1 IN ( ICI TA REQUETE 1 QUI RETOURNE UNE LISTE DE id_t1 )
    OR
       id_t1 IN ( ICI TA REQUETE 2 QUI RETOURNE UNE LISTE DE id_t1 )

  6. #6
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    hihi non
    les sous_requetes = imbrications.

  7. #7
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Salut,

    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM table_1 LEFT JOIN table_2
    ON id_t1 = liaison_t1 
    WHERE liaison_t1 IS NULL OR champs_t2 IS NULL
    ...

  8. #8
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    m**d* !

    désolé de ne pas pouvoir aider, il y a peut-être un moyen avec une requête mais j'ai toujours eu un peu de mal avec les jointures left etc, surtout vu que je m'embrouille avec tous les SGBDR que j'utilise ( je suppose que ton SGBDR ne supporte pas la notation (+) )..

  9. #9
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    KiLVaiDeN, t'en fais pas c'est pas grâve


    Maximilian, merci, ca marche, cela me renvoie un nombre de résultats qui me semble correct.
    j'étudie ma liste si elle a l'air correcte, et je viens vous dire si le sujet est résolu ou pas. merci beaucoup, en tout cas.

  10. #10
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    trop bien !
    merci beaucoup !
    j'ai étudié les left join au passage, histoire de pas polluer le forum une autre fois par mes ignorances !

  11. #11
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Tu as un site qui en parle en lien ?

  12. #12
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622

  13. #13
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Merci, je sais pas pourquoi j'ai un blocage sur les "LEFT JOIN" ou autre OUTER etc... Je comprend pas pourquoi il y a autant de termes

  14. #14
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Je comprend pas pourquoi il y a autant de termes
    Pour refléter les différents types de jointures décrits dans la théorie de l'algèbre relationnelle

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2011, 11h17
  2. [AC-2007] Requete imbriquée : enlever les doublons + count
    Par Tinien dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 23/07/2009, 14h49
  3. Réponses: 2
    Dernier message: 08/01/2009, 10h12
  4. Réponses: 1
    Dernier message: 11/04/2007, 16h11
  5. Faire "remonter" les données dans des requetes imbriquées
    Par Earthwormjim dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/08/2006, 17h37

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