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 :

jointure entre requête imbriquée et requête parente


Sujet :

Requêtes MySQL

  1. #1
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut jointure entre requête imbriquée et requête parente
    bonjour,

    J'emploie des requêtes imbriquées et ai besoin de faire une jointure entre la requête parente et ces dernières seulement j'ignore si cela est possible.

    Voici un exemple simple de ce que je souhaiterais pouvoir faire (je mets des alias mais dans ma base tous les champs sont uniques) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT A.champ1, A.champ2
    FROM matable1 AS A
    WHERE A.champ1 IN(
        SELECT B.champ2
        FROM matable2 AS B
        WHERE B.champ1=A.champ3
    )
    Ce type de requête s'exécute sans erreur dans MYSQL. C'est étonnant car je ne mentionne pas matable1 dans la sous-requête.
    Le problème est que j'ai du mal à savoir si elle me retourne les bons résultats en raison de la complexité même de ces derniers !

    Alors techniquement est-ce possible en SQL ?

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Pourquoi ne pas faire une jointure plutôt qu'une sous-requête corrélée, très gourmande en MySQL ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.champ1, A.champ2
    FROM matable1 AS A
    INNER JOIN matable2 AS B ON B.champ1=A.champ3 AND B.champ2=A.champ1
    Si j'ai bien compris la logique de ta requête.

  3. #3
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    En fait j'ai déjà pas mal de INNER JOIN et LEFT JOIN dans ma (biiig) requête.
    Je me trouve déjà dans un ON d'un INNER JOIN.
    Malheureusement je prendrais trop de temps à expliquer pourquoi mais je DOIS passer par une sous-requête. En gros, je ne dois pas filtrer l'ensemble des résultats mais seulement les résultats qui sont déjà filtrés.

    Je m'y perds moi-même dans cette requête...

    Concernant ma question ? Est-ce possible en Mysql de faire ce que je souhaitais faire càd joindre une table d'une sous-requête à une table de la requête parente (donc sans avoir à la rementionner dans le FROM de la sous-requête...pfiouu) ?

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par speedev Voir le message
    Concernant ma question ? Est-ce possible en Mysql de faire ce que je souhaitais faire càd joindre une table d'une sous-requête à une table de la requête parente (donc sans avoir à la rementionner dans le FROM de la sous-requête...pfiouu) ?
    Ce que tu as fait s'appelle corréller une sous-requête avec la requête mère. MySQL n'aime pas trop les sous-requête, encore moins celles qui sont corréllées.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Si tu nous montrais ta requête et la structure des tables impliquées, et si tu nous exprimais le besoin concret de cette requête, ce serait plus facile de t'aider.

  6. #6
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Je souhaitais seulement savoir si les requêtes corrélées étaient possibles en Mysql. Et effectivement apparemment elles sont pas les bienvenues !
    Je ne vous poste pas ma requête qui ne vous parlerait pas et qui me demanderait trop de temps pour vous l'expliquer (de plus aucune regression possible dans le projet, mise en exploitation approche...).

    Merci !

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

Discussions similaires

  1. Requête Update avec requête imbriquée
    Par sybaris dans le forum Développement
    Réponses: 2
    Dernier message: 05/07/2008, 12h51
  2. Transformation requête imbriquée en requête simple
    Par pbatty1 dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/11/2007, 15h42
  3. Réponses: 1
    Dernier message: 20/04/2007, 23h56
  4. [MySQL] Réécriture de requêtes imbriquées en requêtes classiques
    Par erazkan dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/04/2007, 13h11
  5. [Requête] Faire une requête imbriquée?
    Par sekiryou dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2004, 22h52

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