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 :

aide sur une Question (..de spécialité différente)


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut aide sur une Question (..de spécialité différente)
    bonjour ! il me reste une question question dans un exercice alors j'ai besoin de votre aide a la résoudre j'ai déjà essayer avec plusieurs manière sans arriver a une solution correcte
    Voila Les Tables :
    Médecin ( Idmedecin,nom,prénom,Ddn,Sexe,#Idspecialite)
    Spécialité(Idspecialite,libelle)
    Patient(Idpatient,nom,prénom,Ddn,sexe,adresse)
    soigne(Idsoin,#Idmedecin,#Idpatient,nommaladie,comme,taire,date_soigne)
    Question

    écrire une procédure stocké qui permet :
    -d'afficher le nom , le prénom et le numéro des patients ayant été suivi par au moins deux médecins de spécialité différente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Idpatient,Nom,Prenom  from Patient  where Idpatient in ( select Idpatient  from Soigne  group by Idpatient having COUNT(Idmedecin)>=2)
    alors c'est la ou j'ai besoin d'aide ou plutôt d'idées "...de spécialité différente"
    je sais que ce n'est pas une procédure mais ce qui m'intéresse c'est instructions de cette dernier

  2. #2
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 790
    Points
    6 790
    Billets dans le blog
    4
    Par défaut
    il faut déjà découper la requête en 2 étapes.
    1 - il te faut rechercher tous les patients ayant eu 2 médecins de 2 spécialitées différentes. Ta sous requête n'est pas complète puisque tu affiches les informations pour 2 médecins sans tenir compte de leur spécialité.

    2 - Une fois que tu as extraits tes patients, il te faut faire une jointure, ou procédé à une sous requête telle que tu l'as faite avec comme critère d'égalité l'identifiant ressorti de ta sous requête.

    Je ne te ferais pas la requête, je te laisse réfléchir à ta sous requête, car tout ton problème viens de là. Une fois que celle-ci sera faite, le reste ira tout seul.

    Cordialement,
    Si tu as des questions n'hésite pas les poster.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    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 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Deux façons de faire :
    1) par jointures avec une double jointure medecin/spécialité avec medcin1.id <> medecin2.id
    2) par opération ensembliste UNION puis synthese.

    A +

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci Pour Vos Réponses
    Je vais essayer
    j'ai ajouter DISTINCT a Having pour éviter les même médecin même su j'arrive pas a comparer la spécialité d'un médecin avec les autres sans le faire avec lui même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Idpatient,Nom,Prenom  FROM Patient  WHERE Idpatient IN ( SELECT Idpatient  FROM Soigne  GROUP BY Idpatient HAVING COUNT(distinct Idmedecin)>=2)
    "ne me donne pas du poisson, mais montre moi comment pêcher"

  5. #5
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 790
    Points
    6 790
    Billets dans le blog
    4
    Par défaut
    Mais ton ID médecin seule ne te permet pas de savoir si ces deux praticiens possèdent la même spécialité.

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    oui ou je sais qu'il me manque une sous requête par ce que il s'affiche les patients ayant été suivi par au moins deux médecin alors il me reste la condition de spécialité différente je vais essayer de le résoudre

  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 388
    Points
    18 388
    Par défaut
    Il suffit de rajouter une jointure dans votre sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Idpatient, Nom, Prenom
      FROM Patient
     WHERE Idpatient IN (  SELECT so.Idpatient
                             FROM Soigne so
                                  INNER JOIN Medecin me
                                    ON me.Idmedecin = so.Idmedecin
                         GROUP BY so.Idpatient
                           HAVING count(distinct me.Idmedecin)    > 1
                              AND count(distinct me.Idspecialite) > 1);

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    merci a vous tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     SELECT Idpatient, Nom, Prenom
      FROM Patient
      WHERE Idpatient in (select Idpatient from Soigne,médecin  
                              where médecin.idmedecin=Soigne.Idmedecin
                                group by Soigne.Idpatient
         HAVING count(DISTINCT Soigne.Idmedecin)> 1
         AND count(DISTINCT médecin .idspécialite) > 1)

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

Discussions similaires

  1. Besoin d'aide sur une question
    Par Yasiño dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/11/2012, 21h08
  2. Aide sur une question de test blanc
    Par tareksey dans le forum SQL
    Réponses: 2
    Dernier message: 07/08/2012, 11h44
  3. aide sur une image
    Par laetus dans le forum IHM
    Réponses: 5
    Dernier message: 04/10/2004, 14h54
  4. Aide sur une requete de sélection
    Par stephdiplo150 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2004, 10h40
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

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