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 :

[SQL] Problème de jointures


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut [SQL] Problème de jointures
    Bonjour à toutes/tous,

    débutant en SQL et malgré mes nombreuses lectures de tuto, je tente d'exporter une requête depuis un client lourd vers une macro excel. Problème plus compliqué que prévu car la requête "exportée" ne fonctionne pas directement, ni avec Excel, ni avec Microsoft Query.

    L'export étant généré de manière automatique, je l'ai repris et simplifié, et j'aboutis à une erreur différente. Voici la portion de code qui pose problème.

    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
     
    SELECT
    ...
    FROM 
    	xxx.Defect T1 
    		INNER JOIN xxx.statedef T10 
    			ON T1.state = T10.id
                              ...
                              ...
    		INNER JOIN xxx.version T11 
    			ON T1.des_versionsouhaitee = T11.dbid 
    		LEFT OUTER JOIN parent_child_links T30 
    			ON T1.dbid = T30.parent_dbid AND 16778531 = T30.parent_fielddef_id
     		LEFT OUTER JOIN xxx.Defect T2 
                                          ON ...
    ...
    J'ai donc besoin de faire des jointures et l'erreur sortie est :

    Nom de l'object parent_child_links non valide
    J'ai pourtant bien une table parent_child_links à cet endroit, j'arrive à y accéder par une autre requête. D'où ma déduction : probablement un problème de syntaxe.

    Mes questions :

    - xxx étant un nom de plus de 14lettres, y-a-t-il une limite de taille?
    - INNER et OUTER peuvent-ils être mélangés?
    - Dans la requête exportée, les jointures sont chacunes dans des ( ) (juste après le from, je trouve 15 (, puis une fermeture à chaque jointure). Est-ce utile?

    J'avoue me perdre un peu dans toutes ces jointures.

    J'espère avoir été clair. Merci de m'avoir lu et d'avance pour les réponses/pistes!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Il manque l'essentiel : votre SGBD !
    Essayez de préfixer votre table parent_child_links par le schéma / user à laquelle elle appartient, comme vous l'avez fait sur les autres tables avec votre xxx.

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 169
    Points
    28 169
    Par défaut
    - xxx étant un nom de plus de 14lettres, y-a-t-il une limite de taille?
    Faut voir en fonction du SGBD utilisé, mais en théorie non, pas à 14 en tout cas.
    - INNER et OUTER peuvent-ils être mélangés?
    Oui
    - Dans la requête exportée, les jointures sont chacunes dans des ( ) (juste après le from, je trouve 15 (, puis une fermeture à chaque jointure). Est-ce utile?
    A priori non. Si ça peut simplifier la lecture, dans ce cas (15 parenthèses) ça aurait plutôt tendance à la rendre moins claire.

    le "parent_child_links" n'apparait-il pas plutôt dans la partie SELECT de la requete à la place de T30 ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    En effet il manque le xxx. devant le parent_childlinks, mais c'est une erreur de copier/coller de ma part sur mon post. Donc ce n'est pas la solution.

    En théorie non il ne va pas dans le select, mais bon, comme je suis débutant sur les jointures... en gros, pour faire "très" simple, il s'agit de documents qui sont dans une base, ces documents sont liés par des relations mère/fille, et cette jointure permet de recup des données sur la fille ou la mere. Donc la jointure permet de "recoller" le numero de la mere dans la table des filles..

    Bref, en gros, même si je me trompe en ce qui concerne le select, cela ne devrait pas planter en faisant ce message.

    Merci pour votre aide en tout cas.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    et en faisant un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from parent_child_links
    Ca fonctionne ? tu n'as pas une erreur de frappe quelque part qui traine ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Oui le select tout bête fonctionne. Etrange.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    La dernière remarque de sevyc64 est une bonne candidate sur qui se passe, est-ce que vous avez bien utilisé l'alias de table (t30 dans votre exemple) dans toutes les colonnes au niveau de votre requête ?
    Il suffit d'en oublier une pour faire échouer la requête.

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    En effet j'avais oublié un alias... je me sens bête

    Merci pour vos conseils, vous avez sauvé ma journée!


    Bonne fin d'après-midi.

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

Discussions similaires

  1. [SQL] Problème avec jointure externe
    Par critok dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/10/2009, 12h49
  2. [SQL] problème de jointure
    Par vinz78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/06/2007, 10h09
  3. [SQL]Problème de jointure
    Par rejul dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/06/2007, 10h32
  4. [SQL]Problème avec jointure de tables
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 29/03/2007, 20h43
  5. [Requêtes SQL] Problème de jointure ?
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/12/2006, 15h37

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