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 :

Mise en pratique sous Postgresql


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 29
    Points : 6
    Points
    6
    Par défaut Mise en pratique sous Postgresql
    Bonjour,
    Pourriez vous m’aider à résoudre à ce problème SVP


    RACE (idRace,appellation)
    IdRace :Clé primaire
    ELEVEUR (idEleveur,nomEleveur,adresseRueEleveur ,adresseCPEleveur,adresseVilleEleveur)
    idEleveur :Clé primaire
    VACHE(idVache,dateArrivee,idRace,idEleveur)
    idVache :Clé primaire
    idRace :Clé étrangère en référence à idEleveur de ELEVEUR
    INTYERVENTION(idInter,libelleInter)
    idInter :Clé primaire
    PRATIQUER (dateInter,idInter,idVache)
    DateInter,idInter,idVache :Clé primaire
    idInter :Clé étrangère en référence à idInter de INTERVENTION
    idVache :Clé étrangère en référence à idVache de VACHE
    Indications :
    .dateArrivee :Correspond à la date d’arrivée d’une vache chez éleveur(date de livraison si elle est issue d’un achat, ou date de naissance si elle est née chez l’éleveur).
    Appellation :C’est le champ qui contient l’appellation de la race d’une vache.
    Par exemple dans l’est de la France, on trouvera majoritairement de la « Montbéliarde » , de la « Charolaise » ou de la « Vosgienne ».
    libelleInter :contient la liste des interventions régulièrement pratiquées par les vétérinaire du cabinet (mise bas, Insémination, constatation de décès, euthanasie, examen d’avant vente,…)

    Requête 1 Donnez la liste des vaches accompagnées de leurs races respectives (identifiants et appellations) .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT identifiant, appellation
    FROM vache
    Requête 2 Combien de vaches sont référencées dans la base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT(*) AS “Nb.Vaches”
    FROM vache
    Requête 3 Quelle est la date de la dernière intervention pratiquée sur chaque vache ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX (dateinter) AS «  Dernière intervention pratiquée »
    FROM pratiquer
    Requête 4 Donnez la liste de tous les éleveurs (noms et villes) présents dans le Doubs (département 25) et possédant des vaches de race « Vosgienne »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom,ville 
    FROM éleveur 
    WHERE adresse CP LIKE26%’
    Requête 5 Donnez la liste de tous les éleveurs ayant possédé des vaches dont le décès a été constaté entre le 19/03/2010 et le 31/03/2010.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM vache
    WHERE dateArrivee BETWEEN19/03/2010AND31/03/2010
    Requête 6 Créez une vue qui permettent d’avoir la liste des interventions pratiquées (libellés et dates ) avec les vaches concernées, en affichant les interventions les plus récentes en premier.

    ?

    Requête 7 La vache « FR2567818450 » a été inséminé le 24/07/2010.
    Prenez en compte cette information pour mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERTINTO vache 
    SELECT24/07/2010’,idvache
    FROM vache
    Requête 8 Suite à présomption de « vache folle » dans une livraison, toutes les vaches arrivées le 20/08/2010 ont été euthanasiées le jour même.Prenez en compte cette information pour mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO vache 
    SELECT idvache,’20/08/2010’,dateArrviee
    FROM vache folle
    Requête 9 Suite à un élargissement des activités du cabinet, les vétérinaires vont maintenant également s’occuper de moutons. Ils souhaitent pour cela utiliser la base actuelle ,les soins aux moutons fonctionnant de la même manière que les vaches. Remplacez « VACHE » par « ANIMAL » comme nom de table et également dans les noms de champs quand cela est nécessaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALERTABLE VACHE
    DROPCOLUMN nomVACHE TO ANIMAL
    Requête 10 Pour alléger la base de données, on souhaite que les interventions les plus anciennes (avant 1995) soient supprimées. Prenez en compte cette information pour mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE intervention 
    SELECT 
    WHERE dateinter=1995
    Je vous remercie pour votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par dominiqu Voir le message
    Requête 1 Donnez la liste des vaches accompagnées de leurs races respectives (identifiants et appellations) .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT identifiant, appellation
    FROM vache
    La colonne "appellation" ne fait pas partie de la table "vache". Il faut faire une jointure avec la table "race".

    Requête 2 Combien de vaches sont référencées dans la base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT(*) AS “Nb.Vaches”
    FROM vache
    OK.

    Requête 3 Quelle est la date de la dernière intervention pratiquée sur chaque vache ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX (dateinter) AS «  Dernière intervention pratiquée »
    FROM pratiquer
    Avec ta requête, tu auras la dernière intervention pratiquée mais sans indication de la vache.
    Il faut faire un groupement par vache.

    Requête 4 Donnez la liste de tous les éleveurs (noms et villes) présents dans le Doubs (département 25) et possédant des vaches de race « Vosgienne »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom,ville 
    FROM éleveur 
    WHERE adresse CP LIKE26%’
    On te dit que le département du Doubs porte le numéro 25 et tu ne retiens que les codes postaux débutant par 26 !
    Attention à respecter les noms des tables et colonnes ! Ce n'est pas "éleveur" mais "eleveur" (et même "ELEVEUR", les majuscules ayant une importante, notamment chez Postgresql, et je te conseille de tout mettre en minuscules afin de ne pas avoir de problème). Ce n'est pas "adresse CP" mais "adresseCPEleveur" (là encore, écrire le nom de la colonne tout en minuscules dans Postagresql est préférable).

    Requête 5 Donnez la liste de tous les éleveurs ayant possédé des vaches dont le décès a été constaté entre le 19/03/2010 et le 31/03/2010.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM vache
    WHERE dateArrivee BETWEEN19/03/2010AND31/03/2010
    Là tu vas avoir les vaches qui sont arrivées entre le 19/03/2010 et le 31/03/2010, pas celles qui sont mortes entre ces dates.
    Il faut encore faire des jointures avec les tables "intervention" et "pratiquer".

    Au passage, en SQL les dates sont au format 'aaaa-mm-jj'.

    Requête 6 Créez une vue qui permettent d’avoir la liste des interventions pratiquées (libellés et dates ) avec les vaches concernées, en affichant les interventions les plus récentes en premier.

    ?
    En résolvant les précédents problèmes signalés, notamment les jointures manquantes, tu devrais trouver.

    Requête 7 La vache « FR2567818450 » a été inséminé le 24/07/2010.
    Prenez en compte cette information pour mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERTINTO vache 
    SELECT24/07/2010’,idvache
    FROM vache
    Tout faux !
    Une insémination est une intervention pratiquée sur une vache. C'est donc la table "pratiquer" qu'il faut alimenter, en cherchant les bons codes dans les autres tables pour donner les bonnes valeurs aux colonnes de la table.

    Requête 8 Suite à présomption de « vache folle » dans une livraison, toutes les vaches arrivées le 20/08/2010 ont été euthanasiées le jour même.Prenez en compte cette information pour mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO vache 
    SELECT idvache,’20/08/2010’,dateArrviee
    FROM vache folle
    Idem précédemment ! Complètement faux !

    Requête 9 Suite à un élargissement des activités du cabinet, les vétérinaires vont maintenant également s’occuper de moutons. Ils souhaitent pour cela utiliser la base actuelle ,les soins aux moutons fonctionnant de la même manière que les vaches. Remplacez « VACHE » par « ANIMAL » comme nom de table et également dans les noms de champs quand cela est nécessaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALERTABLE VACHE
    DROPCOLUMN nomVACHE TO ANIMAL
    On te demande d'abord de changer le nom de la table !
    Et comme l'une des colonnes de la table contient le mot "vache", il faut aussi renommer cette colonne.

    Requête 10 Pour alléger la base de données, on souhaite que les interventions les plus anciennes (avant 1995) soient supprimées. Prenez en compte cette information pour mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE intervention 
    SELECT 
    WHERE dateinter=1995
    Je vous remercie pour votre aide
    On te demande de supprimer (DELETE), pas de mettre à jour (UPDATE) !

    Conclusion :
    En l'état actuel, ton travail vaut une note largement en dessous de la moyenne (1 seule requête de bonne et beaucoup d'erreurs grossières) !
    Ou bien tu n'as pas bien suivi les cours SQL qui t'ont été donnés, ou bien tu as bâclé ton devoir !

    Puisque tu titres ton message "Mise en pratique sous Postgresql", installe ce SGBD, implémente la structure de la BDD donnée (en mettant tous les noms d'objets en minuscules sinon tu vas t'emmerder avec les guillemets) et teste tes requêtes. Tu verras ainsi les erreurs retournées par le SGBD et ça t'aidera à réfléchir.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut proposition de réponse
    requête 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select idvache, appellation
    from vache join race on vache.idrace=race.idrace
    req2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select count(*) as 'nbre de vache'
    from vache
    req3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select max(dateInter)
    from pratiquer
    group by idvache
    req4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select nom,ville
    from eleveur join race on eleveur.ideleveur=race.idrace
    where adressecpeleveur like'25%'
    And appellation='vosgienne'

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/06/2014, 22h34
  2. Réponses: 1
    Dernier message: 30/05/2007, 11h31
  3. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  4. Triggers sous PostGreSQL
    Par Phaf dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/08/2003, 14h22
  5. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

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