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 SQL Modélisation


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Par défaut Problème SQL Modélisation
    Bonjour à tous,

    je suis nouveau dans la modélisation de base de données,
    et j'ai d'ailleurs un soucis avec cela...

    J'ai réalisé une modélisation de ce type:

    (voir pièce jointe)

    Concretement ce que j'ai fais c'est :
    "un site peut avoir 1 ou plusieurs IA et inversement un IA peut avoir 1 ou plusieurs sites"

    d'où les cardianlités 1,N des deux cotés, une table association "a_un_IA" a été créée dans PostGreSQL avec les deux clés primaires des deux tables SerialNumber et NumIA.

    Maintenant je crée la BDD sous PostGreSQL
    puis j'ajoute 3 sites dans la tables Site et j'attribue à chaque Site un IA dans la table association "a_un_IA":

    "a_un_IA"
    SerialNumber 1 ---> NumIA 1
    SerialNumber 2 ---> NumIA 1
    SerialNumber 3 ---> NumIA 2

    Je veux maintenant avoir tous les sites, je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select *
    from site
    et j'ai mes 3 sites

    Maintenant je voudrais avoir chaque Site avec son IA associé,
    je fais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT serialnumber, numia
    FROM site join ia on serialnumber=numia
    et j'ai un résultat totalement faux:
    SN---NUMIA
    1 ---1
    2 ---2
    3 ---3

    si j'utilise la table association "a_un_ia", cela ne marcha pas non plus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT serialnumber , numia
    FROM a_un_ia join ia on serialnumber=numia

    Je ne sais pas comment faire....
    Me suis je trompé lors de la modélisation/requête SQL ?
    Pourriez vous me donner un coup de main ?

    Merci d'avance les gars !
    Images attachées Images attachées  

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    Vu que vous n'avez pas donné les définition des tables physique ca va être dur.

    Donc on extrapole :
    Site(id_site, site_nom, ...)
    IA(id_ia, ia_site, ...)
    A_SITE_IA(#id_site, #id_ia)

    Sortir tous les couples ia/site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select *
    from A_SITE_IA
    Si on veut aller plus loin, si on veut les nom des sites associés aux nom des ia :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select s.site_nom, ia.ia_nom
    from site s
    inner join a_site_ia a on a.id_site = s.id_site
    inner join IA a ia on a.id_ia = ia.id_ia

    Et sinon pour éviter de se perdre et comprendre, les jointures c'est par ici : http://sqlpro.developpez.com/cours/sqlaz/jointures/

  3. #3
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Par défaut
    Merci pour votre aide,

    ce que j'ai dans la table "a_un_ia":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE a_un_ia
    (
      serialnumber integer NOT NULL,
      numia integer NOT NULL,
      CONSTRAINT a_un_ia_pkey PRIMARY KEY (serialnumber, numia),
      CONSTRAINT fk_a_un_ia_numia FOREIGN KEY (numia)
          REFERENCES ia (numia) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT fk_a_un_ia_serialnumber FOREIGN KEY (serialnumber)
          REFERENCES site (serialnumber) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )

    dans Site :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    CREATE TABLE site
    (
      serialnumber integer NOT NULL,
      nomhopital character(60),
      nomville character(60),
      modalite character(3),
      itadminnom character(60),
      itadminmail character(60),
      clinicaladminnom character(60),
      clinicaladminmail character(60),
      dateinstall character(10),
      numcse integer NOT NULL,
      numic integer NOT NULL,
      codepostal integer NOT NULL,
      CONSTRAINT site_pkey PRIMARY KEY (serialnumber),
      CONSTRAINT fk_site_codepostal FOREIGN KEY (codepostal)
          REFERENCES departement (codepostal) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT fk_site_numcse FOREIGN KEY (numcse)
          REFERENCES cse (numcse) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT fk_site_numic FOREIGN KEY (numic)
          REFERENCES ic (numic) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )
    dans IA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE ia
    (
      numia integer NOT NULL,
      prenonia character(60),
      nomia character(60),
      mailia character(60),
      CONSTRAINT ia_pkey PRIMARY KEY (numia)
    )

    et je voudrais avoir une requete qui fourni :

    le serialnumber avec le bon numia

    Mais j'y arrive pas ....

    Encore merci

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    cf la 1ere requete que je vous ai donné.
    Rajoutez une clause WHERE si besoin.

  5. #5
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bonjour,

    Vu que vous n'avez pas donné les définition des tables physique ca va être dur.

    Donc on extrapole :
    Site(id_site, site_nom, ...)
    IA(id_ia, ia_site, ...)
    A_SITE_IA(#id_site, #id_ia)

    Sortir tous les couples ia/site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select *
    from A_SITE_IA
    Si on veut aller plus loin, si on veut les nom des sites associés aux nom des ia :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select s.site_nom, ia.ia_nom
    from site s
    inner join a_site_ia a on a.id_site = s.id_site
    inner join IA a ia on a.id_ia = ia.id_ia

    Et sinon pour éviter de se perdre et comprendre, les jointures c'est par ici : http://sqlpro.developpez.com/cours/sqlaz/jointures/

    Merci pour ton aide !

    (Ouais je vais lire et relire les jointures....)


  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Si tu as créé une table pour modéliser la relation, il faut l'utiliser dans ta requête...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  site.serialnumber
        ,   ia.numia
    FROM    site
        JOIN
            a_un_ia
            ON site.serialnumber = a_un_ia.serialnumber
        JOIN
            ia
            ON a_un_ia.numia = ia.numia
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Si tu as créé une table pour modéliser la relation, il faut l'utiliser dans ta requête...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  site.serialnumber
        ,   ia.numia
    FROM    site
        JOIN
            a_un_ia
            ON site.serialnumber = a_un_ia.serialnumber
        JOIN
            ia
            ON a_un_ia.numia = ia.numia
    ;
    MERCI !!!

    La solution était donc de réaliser deux jointures....

    J'aurais dû y tester !

    Encore merci !

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

Discussions similaires

  1. [MS SQL] Problème de modélisation de table
    Par DotNET74 dans le forum Développement
    Réponses: 2
    Dernier message: 24/08/2008, 15h29
  2. [Linq 2 SQL] Problème de modélisation
    Par tomlev dans le forum Accès aux données
    Réponses: 5
    Dernier message: 12/02/2008, 23h29
  3. [Linq 2 SQL] Problème de modélisation
    Par tomlev dans le forum Framework .NET
    Réponses: 5
    Dernier message: 12/02/2008, 23h29
  4. Problèmes SQL
    Par stampe dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/07/2004, 21h02
  5. [Class/PHP/Postgres] Problème de modélisation...
    Par k-reen dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/02/2003, 08h49

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