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

Accès aux données Discussion :

SQL: jointure en cascades


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Points : 29
    Points
    29
    Par défaut SQL: jointure en cascades
    Bonjour à tous,

    Je rencontre un problème de construction d'une requête SQL de type "select".

    J'ai besoin d'effectuer une jointure "en cascade" de 3 tables "BRA", "LOT" et "FAC". Voici le texte de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select bra.bra_num, lot_period, fac.fac_ind from lot inner join fac on lot.lot_num = fac.lot_num inner join bra on fac.bra_num = bra.bra_num
    Tous les champs utilisés comme critère de jointure sont des "alphanumériques".

    Le framework intercepte une erreur avec le message suivant :
    Erreur de syntaxe (opérateur absent) dans l'expression 'lot.lot_num = fac.lot_num inner join bra on fac.bra_num = bra.bra_num'
    Par contre, si j'utilise, pour la deuxième jointure, la syntaxe du SQL1, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select bra.bra_num, lot_period, fac.fac_ind from lot inner join fac on lot.lot_num = fac.lot_num, bra where fac.bra_num = bra.bra_num
    ...cela fonctionne parfaitement !

    Quelqu'un saurait-il me dire ce qui cloche ?

    Merci beaucoup de votre aide.

    Bernard
    Bernard

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    En fait, en cherchant un peu mieux sur ce forum, j'ai trouvé l'explication :

    En .Net - ce n'était pas nécessaire avant avec Delphi et les composants KadAO, ni dans le SQL "normal", à ce que je sache -, il faut des parenthèses. Cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select bra.bra_num, lot_period, fac.fac_ind from ((lot inner join fac on lot.lot_num = fac.lot_num) inner join bra on fac.bra_num = bra.bra_num)
    Quelqu'un saurait-il me dire où je peux trouver un tuto sur les spécificités de la syntaxe SQL de .Net ?

    Merci pour vos pistes...

    Cordialement

    Bernard
    Bernard

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Bernard M Voir le message
    En .Net - ce n'était pas nécessaire avant avec Delphi et les composants KadAO, ni dans le SQL "normal", à ce que je sache -, il faut des parenthèses.
    Citation Envoyé par Bernard M Voir le message
    Quelqu'un saurait-il me dire où je peux trouver un tuto sur les spécificités de la syntaxe SQL de .Net ?
    Il n'y a pas de "syntaxe SQL de .NET"... la syntaxe à utiliser est toujours celle du SGBD spécifique sur lequel la requête est exécutée. Il y a peut-être des petites subtilités quand tu passes par certains providers comme ODBC par exemple, mais la différence vient d'ODBC, pas de .NET

    En tous cas la syntaxe que tu indiques avec des parenthèses me semble assez bizarre, je n'ai jamais vu un seul SGBD qui ait besoin de ces parenthèses (en tous cas ce n'est pas la syntaxe SQL standard)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Bonjour Tomlev,

    C'est presque par hasard que j'ai vu ta réponse, six mois après ! Je ne comprends pas ce qui s'est passé, ce n'est pas dans mes habitudes. Je te prie sincèrement de m'excuser pour ce "silence impoli".

    J'ai effectivement été surpris de la nécessité de ces parenthèses, mais je m'y suis fait !

    J'ai remarqué d'ailleurs d'autres petites différences dans la syntaxe par rapport au composant pour Delphi, toujours pour attaquer une base Access.

    Encore merci et mille excuses 64bits !
    Bernard

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Bernard M Voir le message
    J'ai remarqué d'ailleurs d'autres petites différences dans la syntaxe par rapport au composant pour Delphi, toujours pour attaquer une base Access.
    Il aurait peut être fallu commencer par nous préciser qu'il s'agissait d'une base Access dont en effet le Sql est assez éloigné des standards.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Bluedeep :

    Il s'agissait aussi d'une base Access dans le contexte du composant de Delphi, c'est pourquoi j'ai écris :

    toujours pour attaquer une base Access.
    Le coup des parenthèses dans le cas de jointures en cascades, par exemple, le composant de Delphi ne les exigeait pas ! C'était l'objet initial de la discussion.

    Cordialement
    Bernard

Discussions similaires

  1. Pb sql - jointure
    Par Celia1303 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/11/2005, 09h00
  2. [SQL] jointure externe
    Par Sniper37 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2005, 15h06
  3. [SQL] Jointure,Group BY et ORDER BY COUNT qui marche pas
    Par Stef784ever dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/08/2005, 12h28
  4. [SQL] jointure externe avec 3 tables, comment faire ....
    Par grumbok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 16h13
  5. [sql] [jointure] champs = substring(champs,1,5)
    Par DaxTaz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2004, 12h45

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