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 :

Création des requêtes SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Création des requêtes SQL
    Bonjour, je suis entrain d'apprendre le langage SQL (débutant), alors comme on étudie en ligne, le prof nous a demandé de créer une base de données d'une pharmacie, et de réaliser ces requêtes :

    Selectionner une ligne dans une table.
    Selectionnee une colonne d'une table.
    Supprimer une ligne d'une table.
    Modifier la valeur d'un champs dans une table.
    Violer l'intégrité référentielle.
    Réaliser une opération de jointure sur 3 tables.
    Réaliser une opération d'union sur 2 tables.
    Classer les lignes d'une table par ordre décroissant des valeurs d'une colonne.
    Calculer une moyenne, une somme, et le nombre de lignes qui respectent une condition donnée.

    pour les table j'ai créé Clients, Médicament, Ordonnance, Fournisseur, Commande et Stock)
    Alors Pouvez vous m'aider svp ????

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Sans voir la structure de tes tables, il nous sera difficile de faire quelque commentaire que ce soit.

    Idem concernant tes requêtes. Quoi qu'il en soit ce ne serait pas te rendre service de te donner des requêtes toutes faites.
    Ily a des tutos bien fait dans cette section de Developpez.com.

    Tu peux nous montrer ce que tu as fait, on pourra t'aiguiller vers une solution.
    Mais si tu n'arrive pas à faire ne serait-ce que les quatre premières requêtes, je pense qu'il serait préférable que tu reprennes tes cours au début.
    Ou que tu changes de cours

    Tatayo.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour, ces requêtes là c'est moi qui en décide de faire pour mieux comprendre mon travail, c'est une initiative personnelle, et pour la structure voila la base de données:
    Médicament (CodeMed, Nom, Libellé, Substance, DateExp, Prix)
    Clients (Id,Nom, Prénom,Age, Sexe, CodeOrdo)
    Ordonnance (CodeOrdo, DateConsultation, Médecin, Médicaments)
    Commande ( N°Commande, Date, Montant, Fournisseur)
    Fournisseur ( Code, Ville, Usine)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Je pense qu'il manque encore des choses, comme une table médecin, le lien entre la table ordonnance et médicament (sachant qu'une ordonnance peut avoir plusieurs médicament, et qu'un médicament peut être dans plusieurs ordonnances), le lien entre fournisseur et médicament (est-ce qu'un même médicament peut avoir plusieurs fournisseurs ?), celui entre client et ordonnance (un même client peut avoir plusieurs ordonnances, mais une ordonnance ne concerne qu'un client), etc...

    Je pense qu'avant de parler de table, il faudrait faire un schéma avec les différentes entités et les liens qui les relient.

    Une fois celui-ci posé, on pourra parler de schéma. Et une fois celui-ci terminé on pourra passer aux requêtes.

    Comme disait un collègue: yapluka

    Tatayo.

    P.S. Tu as mis un Id dans la table client, ce qui est une bonne idée. Pourquoi ne pas avoir fait la même chose dans les autres tables ?

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 129
    Points : 38 521
    Points
    38 521
    Billets dans le blog
    9
    Par défaut
    Bonjour Mallek155

    Comme il s'agit d'un exercice, on peut comprendre certaines approximations, mais je précise tout de même certains points qui peuvent vous être utiles


    Citation Envoyé par Mallek155 Voir le message
    Médicament (CodeMed, Nom, Libellé, Substance, DateExp, Prix)
    Cette modélisation implique que toutes les boites d'un même médicament ont la même date d'expiration, elle implique également qu'un médicament ne contient qu'une et une seule "substance"
    Dans la vraie vie, les médicaments sont composés d'un ou plusieurs composants et la pharmacie possède un stock de plusieurs boites, flacons ou autre emballage, chacun d'eux ayant une certaine date d'expiration.


    Citation Envoyé par Mallek155 Voir le message
    Clients (Id,Nom, Prénom,Age, Sexe, CodeOrdo)
    L'âge n'est pas un attribut stable. Il faut stocker la date de naissance et calculer l'âge par requête quand vous en avez besoin
    Le code ordo ou plutôt le n° d'ordonnance n'est pas unique pour un client, il n'a donc rien à faire dans la table des clients (ne dit on pas plutôt "patient" dans une pharmacie ?)


    Citation Envoyé par Mallek155 Voir le message
    Ordonnance (CodeOrdo, DateConsultation, Médecin, Médicaments)
    Il ne doit jamais avoir d'attribut de type liste dans une table, de plus, il existe des ordonnances sans médicaments (on peut prescrire simplement du repos, de la kiné etc.) donc évacuez médicaments de la table "ordonnance" et créez une table "prescription" permettant de lier l'ordonnance avec chaque médicament prescrit


    Voici un exemple de MCD simplifié couvrant une partie du modèle (je n'ai pas modélisé les commandes et les fournisseurs)

    Pièce jointe 592094

    À titre didactique, j'ai utilisé l'héritage en créant une entité-type personne qui rassemble les attributs communs aux patients et aux médecins (nom, prénom, etc.).
    En effet : un médedin est également parfois un patient (il peut être malade comme tout le monde) et à ce titre aller dans une pharmacie pour lui même. Si on crée les données du médecin d'une part en tant que praticien et d'autre part en tant que patient, il y a redondance et risque d'erreur. L'héritage permet d'éviter ce problème. Dans le sous-type "médecin" on trouve le numéro de praticien et dans le sous-type "patient" la date de naissance dont on se fiche concernant le médecin.

    On voit que l'ordonnance prescrit zéro à plusieurs médicaments et que chaque médicament est stocké en zéro à plusieurs exemplaires. C'est chaque exemplaire qui possède un n° de lot de fabrication, une date de fabrication et une date d'expiration.
    Chaque médicament est composé d'un à plusieurs composants et peut présenter zéro à plusieurs effets indésirables.

    Ici j'ai utilisé le logiciel Looping (gratuit) en choisissant SQL server comme SGBD, ce qui a produit le script suivant :

    Code SQL : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    CREATE TABLE PE_personne(
       PE_ident INT IDENTITY,
       PE_nom VARCHAR(50) NOT NULL,
       PE_prenom VARCHAR(50) NOT NULL,
       PRIMARY KEY(PE_ident)
    );
     
    CREATE TABLE MM_medicament(
       MM_ident INT IDENTITY,
       MM_nom VARCHAR(50) NOT NULL,
       PRIMARY KEY(MM_ident),
       UNIQUE(MM_nom)
    );
     
    CREATE TABLE EI_effet_indes(
       EI_ident INT IDENTITY,
       EI_description VARCHAR(512) NOT NULL,
       PRIMARY KEY(EI_ident)
    );
     
    CREATE TABLE CO_composant(
       CO_ident INT IDENTITY,
       CO_nom VARCHAR(50) NOT NULL,
       PRIMARY KEY(CO_ident)
    );
     
    CREATE TABLE MX_exemplaire(
       MM_ident INT,
       MX_ident INT IDENTITY,
       MX_numlot CHAR(10) NOT NULL,
       MX_dtfab DATE NOT NULL, --date de fabrication
       MX_dtexp VARCHAR(50) NOT NULL, --date d'expiration
       PRIMARY KEY(MM_ident, MX_ident),
       FOREIGN KEY(MM_ident) REFERENCES MM_medicament(MM_ident)
    );
     
    CREATE TABLE ME_medecin(
       PE_ident_ME INT,
       ME_rpps CHAR(11) NOT NULL, --numéro du Répertoire Partagé des Professionnels de Santé (RPPS)
       PRIMARY KEY(PE_ident_ME),
       UNIQUE(ME_rpps),
       FOREIGN KEY(PE_ident_ME) REFERENCES PE_personne(PE_ident)
    );
     
    CREATE TABLE PA_patient(
       PE_ident_PA INT,
       PA_ddn DATE NOT NULL,
       PRIMARY KEY(PE_ident_PA),
       FOREIGN KEY(PE_ident_PA) REFERENCES PE_personne(PE_ident)
    );
     
    CREATE TABLE OR_ordonnance(
       OR_ident INT IDENTITY,
       OR_date DATE NOT NULL,
       PE_ident_PA INT NOT NULL,
       PE_ident_ME INT NOT NULL,
       PRIMARY KEY(OR_ident),
       FOREIGN KEY(PE_ident_PA) REFERENCES PA_patient(PE_ident_PA),
       FOREIGN KEY(PE_ident_ME) REFERENCES ME_medecin(PE_ident_ME)
    );
     
    CREATE TABLE PR_prescrire(
       OR_ident INT,
       MM_ident INT,
       PR_posologie VARCHAR(256) NOT NULL,
       PRIMARY KEY(OR_ident, MM_ident),
       FOREIGN KEY(OR_ident) REFERENCES OR_ordonnance(OR_ident),
       FOREIGN KEY(MM_ident) REFERENCES MM_medicament(MM_ident)
    );
     
    CREATE TABLE PS_presenter(
       MM_ident INT,
       EI_ident INT,
       PRIMARY KEY(MM_ident, EI_ident),
       FOREIGN KEY(MM_ident) REFERENCES MM_medicament(MM_ident),
       FOREIGN KEY(EI_ident) REFERENCES EI_effet_indes(EI_ident)
    );
     
    CREATE TABLE MC_composer(
       MM_ident INT,
       CO_ident INT,
       PRIMARY KEY(MM_ident, CO_ident),
       FOREIGN KEY(MM_ident) REFERENCES MM_medicament(MM_ident),
       FOREIGN KEY(CO_ident) REFERENCES CO_composant(CO_ident)
    );

Discussions similaires

  1. Valeur des formulaire réutilisées dans des requètes SQL.
    Par cotmar dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/05/2006, 10h16
  2. Fabriquer des requêtes sql à partir d'un document xml
    Par ktel dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 18/10/2005, 16h45
  3. [MFC] comment écrire des requêtes SQL
    Par kitsune dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2005, 15h23
  4. Journal des requêtes SQL effectuées
    Par Kcirtap dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 09h58
  5. Recherche ibrairie pour éxécuter des requêtes SQL via C++
    Par daemon dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 14/06/2004, 10h28

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