Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    juin 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juin 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut imbrication de requetes.

    Bonjours,
    J’ai deux tables:
    directions(iddirections,direction) iddirections est la clé primaire.
    services(idservices,iddirections,service) idservices est la clé primaire; iddirections est la clé étrangère qui lit les deux table
    sachant que directions ---1,N---<>---1,1---services.

    Est ce que les requêtes suivantes donneront le même résultat ?


    requête 1:
    Code :
    1
    2
    3
    4
    5
    6
    SELECT * FROM
    (SELECT services.idservices,services.iddirections,service
    FROM services INNER JOIN directions ON
    (services.iddirections=directions.iddirections)
    WHERE direction=:d)
    WHERE service=:s
    requête2:
    Code :
    1
    2
    3
    4
    5
     
    SELECT services.idservices,services.iddirections,service
    FROM services INNER JOIN directions ON
    (services.iddirections=directions.iddirections)
    WHERE direction=:d AND service=:s

  2. #2
    Membre Expert
    Homme Profil pro Olivier Dehorter
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    967
    Détails du profil
    Informations personnelles :
    Nom : Homme Olivier Dehorter
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 967
    Points : 1 315
    Points
    1 315

    Par défaut

    oui, sauf que la requête 1 ne devrait pas fonctionner puisqu'aucun allias n'est indiqué pour la partie imbriquée, donc un problème avec :
    WHERE service=:s
    Service va être inconnu

  3. #3
    Invité de passage
    Inscrit en
    juin 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juin 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par dehorter olivier Voir le message
    oui, sauf que la requête 1 ne devrait pas fonctionner puisqu'aucun allias n'est indiqué pour la partie imbriquée, donc un problème avec :

    Service va être inconnu
    si j'ai bien compris , la requête sera par exemple :

    Code :
    1
    2
    3
    4
    5
    6
    SELECT * FROM
    (SELECT services.idservices,services.iddirections,service
    FROM services INNER JOIN directions ON
    (services.iddirections=directions.iddirections)
    WHERE direction=:d) T
    WHERE T.service=:s

  4. #4
    Membre Expert
    Homme Profil pro Olivier Dehorter
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    967
    Détails du profil
    Informations personnelles :
    Nom : Homme Olivier Dehorter
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 967
    Points : 1 315
    Points
    1 315

    Par défaut

    oui, mais elle ne sert a rien. Mais une requête imbriquée dans ce cas ne sert à rien

  5. #5
    Invité de passage
    Inscrit en
    juin 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juin 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut

    Oui c'est ce que je pensais moi aussi, j'ai trouvé cette requête en modifiant une application et je voulait être certain que ça ne servait à rien d'imbriquer, une simple jointure suffit.
    Merci beaucoup.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •