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

Langage SQL Discussion :

Inner Join & Select


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut Inner Join & Select
    Devant développer une application qui devra touner sur différents types de tables, je dois faire mon possible pour que les requètes SQL soient acceptées par tous les types. J'aimerais donc eviter d'utilisre des INNER JOIN pour faire mes requètes. Je cherche donc une méthode simple pour remplacer, dans mes requètes, mes INNER JOIN par des requètes imbriquées.

    Merci.
    + + +

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    les [INNER] JOIN SQL2
    les sous-requetes SQL2

    normalement un système qui accepte l'un accepte l'autre, à de très rare exception.

    Si tu pouvais eviter de mettre des titres en majuscules, c'est interdit ici.

  3. #3
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut Et Oracle
    L'application risque de tourner sur des versions d'Oracle antérieures à la 9i. Or j'ai entendu dire que les INNER JOIN ne fonctionnaient pas avant cette version donc...

    Nb: Désolé pour le titre.
    + + +

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Effectivement Oracle n'est pas aux normes SQL :-(

    Par contre l'equivalent du INNER JOIN n'est pas des sous requete...


    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM T1 INNER JOIN T2 ON T1.C1=T2.C2;

    Donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM T1,T2 WHERE T1.C1=T2.C2;

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Citation Envoyé par bclar
    Je suis d'accord pour un tel exemple mais pour un cas comme celui là, je fais comment...
    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
    17
    18
    19
    20
    21
    22
    23
    24
    SELECT ENS_ID_VOIE,PAN_ANNEE_FAB,EQM_CODE_PP,EQM_TYPE_PP,SADR_NOM,SS_NOM,ENS_SENS,
    ENS_PR,LATE_NOM,GAM_NOM,TSUP_TYPE
    FROM
    (PP_LATERAL INNER JOIN
     (
      PP_SADRE_SUP INNER JOIN
      (
       PP_T_SUP INNER JOIN
       (
        PP_EQUIP INNER JOIN
        (
         PP_SADRE INNER JOIN
         (
          PP_GAMME INNER JOIN
          (
           PP_ENS INNER JOIN PP_PANNO ON PP_ENS.ENS_ID=PP_PANNO.PAN_ID_ENS
          )ON PP_GAMME.GAM_ID=PP_PANNO.PAN_ID_GAMME
         )ON PP_SADRE.SADR_ID=PP_PANNO.PAN_SADRE
        )ON PP_EQUIP.EQM_ID=PP_PANNO.PAN_ID_CODE_PP
       )ON PP_T_SUP.TSUP_ID=PP_ENS.ENS_ID_TYPE_SUP
      )ON PP_ENS.ENS_ID_SADRE=PP_SADRE_SUP.SS_ID
     )ON PP_ENS.ENS_ID_LATERALISATION=PP_LATERAL.LATE_ID
    ) 
    ORDER BY ENS_ID_VOIE;

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Sans tester, ça est-ce que ca marche :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    SELECT 
    	ENS_ID_VOIE,
    	PAN_ANNEE_FAB,
    	EQM_CODE_PP,
    	EQM_TYPE_PP,
    	SADR_NOM,
    	SS_NOM,
    	ENS_SENS, 
    	ENS_PR,
    	LATE_NOM,
    	GAM_NOM,
    	TSUP_TYPE 
    FROM 
    	PP_LATERAL,
    	PP_SADRE_SUP,
    	PP_T_SUP,
    	PP_EQUIP,
    	PP_SADRE,
    	PP_GAMME,
    	PP_ENS,
    	PP_PANNO 
    WHERE 
    	PP_ENS.ENS_ID=PP_PANNO.PAN_ID_ENS 
    	AND PP_GAMME.GAM_ID=PP_PANNO.PAN_ID_GAMME 
    	AND PP_SADRE.SADR_ID=PP_PANNO.PAN_SADRE 
    	AND PP_EQUIP.EQM_ID=PP_PANNO.PAN_ID_CODE_PP 
    	AND PP_T_SUP.TSUP_ID=PP_ENS.ENS_ID_TYPE_SUP 
    	AND PP_ENS.ENS_ID_SADRE=PP_SADRE_SUP.SS_ID 
    	AND PP_ENS.ENS_ID_LATERALISATION=PP_LATERAL.LATE_ID  
    ORDER BY ENS_ID_VOIE;

  7. #7
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Ca à l'air de marcher mais il faut que je fasse plus de test pour en être sûr.

    Merci.

    Nb: Désolé pour mes erreurs dans le forum, je n'y suis pas encore habitué.
    + + +

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Citation Envoyé par bclar
    Ca à l'air de marcher mais il faut que je fasse plus de test pour en être sûr.
    Oui il vaut mieux :-)

    Normalement il suffit donc de mettre toutes tes tables dans le FROM, et de mettre toutes tes égalités des ON dans le WHERE séparé par des AND.

    Citation Envoyé par bclar
    Nb: Désolé pour mes erreurs dans le forum, je n'y suis pas encore habitué.
    Pas grave :-)

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

Discussions similaires

  1. SQL INNER JOIN et SELECT
    Par onha94 dans le forum Développement
    Réponses: 8
    Dernier message: 22/01/2015, 17h32
  2. INNER JOIN et SELECT
    Par bokehfr dans le forum Requêtes
    Réponses: 4
    Dernier message: 09/05/2014, 22h08
  3. Réponses: 2
    Dernier message: 21/05/2012, 11h08
  4. SQL inner join select temps d'éxécution
    Par binouzzz19 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/10/2007, 14h50
  5. Un doute...select avec INNER JOIN
    Par Thierry8 dans le forum Requêtes
    Réponses: 6
    Dernier message: 18/12/2005, 16h14

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