Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2011, 17h30   #1
 
françoi dominique
Inscription : novembre 2010
Messages : 27
Détails du profil
Informations personnelles :
Nom : françoi dominique

Informations forums :
Inscription : novembre 2010
Messages : 27
Points : -9
Points : -9
Par défaut Mise en pratique sous Postgresql

Bonjour,
Pourriez vous m’aider à résoudre à ce problème SVP


Citation:
RACE (idRace,appellation)
IdRace :Clé primaire
Citation:
ELEVEUR (idEleveur,nomEleveur,adresseRueEleveur ,adresseCPEleveur,adresseVilleEleveur)
idEleveur :Clé primaire
Citation:
VACHE(idVache,dateArrivee,idRace,idEleveur)
idVache :Clé primaire
idRace :Clé étrangère en référence à idEleveur de ELEVEUR
Citation:
INTYERVENTION(idInter,libelleInter)
idInter :Clé primaire
Citation:
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 :
1
2
SELECT identifiant, appellation
FROM vache
Requête 2 Combien de vaches sont référencées dans la base ?

Code :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
1
2
3
UPDATE intervention 
SELECT 
WHERE dateinter=1995
Je vous remercie pour votre aide
dominiqu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 09h53   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 995
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 995
Points : 18 253
Points : 18 253
Envoyer un message via MSN à CinePhil
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 :
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".

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

Code :
1
2
SELECT COUNT(*) AS “Nb.Vaches”
FROM vache
OK.

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

Code :
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.

Citation:
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 :
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).

Citation:
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 :
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'.

Citation:
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.

Citation:
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 :
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.

Citation:
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 :
1
2
3
INSERT INTO vache 
SELECT idvache,’20/08/2010’,dateArrviee
FROM vache folle
Idem précédemment ! Complètement faux !

Citation:
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 :
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.

Citation:
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h43.


 
 
 
 
Partenaires

Hébergement Web