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 :

Comportement de JOIN


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Comportement de JOIN
    Bonjour à tous,

    Quelqu'un peut-il me dire pourquoi la requête suivante fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select batiment from service join hosp on service.code=hosp.code_service
    mais pas la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom from docteur join soin on docteur.no = soin.no_soignant
    ?

    DOCTEUR(NOM, NO, SPECIALITE, SALAIRE)
    SOIN(NO_SOIGNANT, NO_MALADE, NO, COUT, DATE)
    Bon, je ne parviens pas à envoyer la base de données complète (format odb)...

    Remerciements appuyés

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Syntaxiquement elle est juste, recevez-vous un message d'erreur ?

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    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 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Peut-être que NO_SOIGNANT ne pointe pas sur DOCTEUR.

    Ou alors les docteurs choisis n'ont pas encore fait de soins
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  4. #4
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses,

    Je reçois le message "Syntax error in SQL statement"...

    Les tables en question ont la structure suivante :
    DOCTEUR(NOM, NO, SPECIALITE, SALAIRE)
    SOIN(NO_SOIGNANT, NO_MALADE, NO, COUT, DATE)

    Je débute, mais la syntaxe est la même dans les deux exemples...

    Je suis soulagé qu'elle soit correcte. Mais alors ??

    Par ailleurs, le forum ne me permet pas de télécharger mon .odb (fichier non valide)

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    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 193
    Points : 28 077
    Points
    28 077
    Par défaut
    ta table s'appelle SOIN ou plutôt SOINS
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    ta table s'appelle SOIN ou plutôt SOINS
    oui, oui on peut s'en amuser...

    mais non ma table s'appelle soin.

    Comment faire SVP pour vous faire passer cette petite BDD ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut utilisation des noms de tables/champs proposés au départ
    Bonjour,

    Comme il s'agit dune base odb, j'en ai créé une rapidement

    étrangement si, comme indiqué, la première requête renvoie une erreur, celle-ci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM DOCTEUR  JOIN  SOIN  ON "DOCTEUR"."NO"="SOIN"."NO_SOIGNANT"
    Je ne maitrise pas du tout OpenOffice Base mais du coup je me suis posé une question : "NO ne serait-il un mot réservé ?"
    Changer les noms des champs NO en NUMERO et un test plus tard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM DOCTEUR JOIN SOIN ON DOCTEUR.NUMERO=SOIN.NO_SOIGNANT
    me l'a confirmé ! N.B. je serais bien incapable de trouver une liste de ces mots réservés !

    Comment faire SVP pour vous faire passer cette petite BDD ?
    dans un zip, mais je pense que ce ne sera plus nécessaire
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    MERCI ALLELUIA !

    pour rigoler, la requête suivante fonctionne :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select no_malade from soin join docteur on soin.no_soignant=docteur.no where specialite = 'Dermatologie'

    pas de "no" recquis...

    ça m'agace !

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    le plus simple étant de respecter la norme SQL qui, pour le nommage des objets (identifiants SQL) indique :
    1) de n'utilisez que les 26 lettres de l'alphabet (pas d'accent, cédille ligature...), les chiffres de 0 à 9 et le blanc souligné
    2) de commencer par une lettre ou le blanc souligné
    3) d'éviter d'utiliser tout mot clef du SQL (donc pas DATE, TYPE, NO....) saf à les entourer de guillemets.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Simuler le comportement d'un FULL OUTER JOIN
    Par ced dans le forum Contribuez
    Réponses: 2
    Dernier message: 08/12/2011, 14h25
  2. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  3. Réponses: 2
    Dernier message: 22/09/2003, 11h23
  4. Réponses: 5
    Dernier message: 04/08/2003, 21h50
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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