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 :

Problème Requete Multi Jointure + Like


Sujet :

Langage SQL

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Je rajoute que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM  patient P
    INNER JOIN visite V ON P.PaNum = V.ViNum
    INNER JOIN photo PH ON V.Vinum = PH.ViNum
    LEFT OUTER JOIN diagnostic D ON PH.DiCode = D.DiCode
    LEFT OUTER JOIN adresse A ON P.PaNum = A.PaNum
    Sans la clause WHERE celle ci me renvoit 28 lignes, évidement dans aucunes le fichier photo apparait ...
    en essayant diverse combinaisons de INNER et de LEFT sans clause WHERE cela me renvois bien des ligens mais aucunes ne contient le fichier photo recherché :S

  2. #22
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    Que renvoie celle-ci ?

    SELECT *
    FROM patient P
    INNER JOIN visite V ON P.PaNum = V.ViNum
    INNER JOIN photo PH ON V.Vinum = PH.ViNum
    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/ * * * * *

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta patience SQLPro

    elle renvoit 24 lignes mais aucunes avec mon fichier photo

  4. #24
    Membre habitué Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Points : 171
    Points
    171
    Par défaut
    J'aime bien ordonner mes jointures et, des fois, ça règle des problèmes comme celui-ci.
    Donc, je prend en compte que le patient à obligatoirement une adresse et une visite ce qui me permet d'enlever le LEFT sur les jointure adresse et visite (ce qui devrait pas faire la différence dans ce cas ci, mais pour simplifier).

    J'ai donc ordonner les jointures en ordre d'adresse, visite, photo et diagnostique. Vu que adresse et visite sont existante, y'a aucune raison que les photos d'une visite n'aparaîssent et ses diagnostiques à moins que la clause WHERE soit en erreur (majuscule, espace...) Dans ce cas un test avec TRIM et UPPER peut confirmer nos doutes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * 
    FROM  patient P 
    JOIN adresse A ON P.PaNum = A.PaNum 
    JOIN visite V ON P.PaNum = V.ViNum 
    LEFT OUTER JOIN photo PH ON V.Vinum = PH.ViNum 
    LEFT OUTER JOIN diagnostic D ON PH.DiCode = D.DiCode 
    WHERE PH.PhPath LIKE '%REje14M000001%'
    Bonne chance!

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Merci pour ton aide, cependant ta requête ne renvoit rien car dans mon exemple, la photo est bien existante, et renvoit bien à une visite, cependant le diagnostique n'existe pas, ni le patient et évident ni l'adresse ...

    Je dois construire une requete 4X4 si on peut dire, car pour une autre photo par exemple, celle ci pourrait avoir un diagnostic, une visite associé un patient mais sans adresse ... c'est selon les photos, en faite mon projet à pour but de mettre en avant toutes les informations disponibles sur une photo, en vus d'un delete sur les informations ... qui peuvent différer d'une photo à une autre...

  6. #26
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    La requête me parait fausse au niveau de la jointure.

    en effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM patient P
    INNER JOIN visite V ON P.PaNum = V.ViNum --> PaNum = ViNum ???
    INNER JOIN photo PH ON V.Vinum = PH.ViNum
    ne serait ce pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM patient P
    INNER JOIN visite V ON P.PaNum = V.PaNum
    INNER JOIN photo PH ON V.Vinum = PH.ViNum
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM patient P
    INNER JOIN visite V ON P.ViNum = V.ViNum
    INNER JOIN photo PH ON V.Vinum = PH.ViNum
    D'ou l'intérêt de respecter A LA LETTREn les régles du forum, cela éviterait de faire perdre du temps à tous, y compris le tien..
    A relire donc :
    http://www.developpez.net/forums/viewtopic.php?t=32668

    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/ * * * * *

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Dsl d'abuser de votre patience, mais je viens de tester tes requetes, il y avait certe une erreur dans l'une d'entre elles, cependant je n'y retrouve toujours pas cette fameuse photo ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM patient P
    INNER JOIN visite V ON P.PaNum = V.PaNum
    INNER JOIN photo PH ON V.Vinum = PH.ViNum

    qui me renvoit 60 lignes ne contenant pas la photo


    Cependant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM patient P
    INNER JOIN visite V ON P.ViNum = V.ViNum
    INNER JOIN photo PH ON V.Vinum = PH.ViNum
    Renvoit une erreur, car il n'y a pas de clef étrangère visite dans patient

    Merci encore

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    je l'ai fais ne plusieurs requetes ... mais merci quand même ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. REQUETE multi jointure
    Par olive_olive dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/02/2011, 23h43
  2. Requete Multi jointure lourde, besoin d'optimisation
    Par Kijer dans le forum Requêtes
    Réponses: 13
    Dernier message: 22/10/2007, 16h43
  3. Réponses: 12
    Dernier message: 23/05/2007, 10h37
  4. Problème Requete Multi Jointure + Like
    Par thefutureisnow dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/01/2006, 19h39
  5. Problème de requete multis-selections
    Par tripper.dim dans le forum SQL
    Réponses: 9
    Dernier message: 03/09/2003, 13h08

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