Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 11/12/2012, 12h19   #1
gap34
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2012
Messages : 2
Points : 1
Points : 1
Par défaut Table et requêtes simples SQL

Bonjour à tous,

Étant débutant en la matière, j'aimerais savoir si ma table ANIMAL et mes requêtes SQL sont correctes

Voici mon schéma de relation d'une BDD simplifiée d'un parc animalier :
Citation:
ANIMAL (id_a,nom_a, datenaiss_a, id_menu, id_endroit, race_fam, ori_fam)
ENFANT (id_enf, nom_enf,datenaiss_enf, id_a_pere,id_a_mere)
FAMILLE(race_fam,ori_fam)
ENDROIT (id_endroit, type_endroit, superf_endroit,nbmaxoccupant)
MENU (id_menu,quteviande_menu,qutelegume_menu)
J'ai créé la base: 'CREATE DATABASE PARC'

Et voici ma table 'ANIMAL':

Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE ANIMAL
(
  id_a        CHAR(6)     NOT NULL PRIMARY KEY
, nom_a       VARCHAR(20) NOT NULL
, datenaiss_a DATE(10)    NOT NULL
, id_menu     CHAR(6)     NOT NULL REFERENCES MENU   (ID_MENU)
, id_endroit  CHAR(6)     NOT NULL REFERENCES ENDROIT(ID_ENDROIT)
, race_fam    VARCHAR 20) NOT NULL
, race_fam    VARCHAR(30) NOT NULL REFERENCES FAMILLE(RACE_FAM)
, ori_fam     VARCHAR(30) NOT NULL REFERENCES FAMILLE(ORI_FAM)
);
Je pense qu'elle est fausse car je n'ai pas intégré les clés étrangères id_e,race_fam et origine_fam mais je ne sais pas où inscrire "FOREIGN KEY" vu que j'ai déjà 'REFERENCES"

Et voici donc mes requêtes SQL:

Liste de tous les animaux qui sont parents et le nombre d'enfants qu'ils ont
Code :
1
2
3
SELECT nom_a
FROM ANIMAL
GROUP BY ENFANT
Liste des animaux dont les deux parents sont connus
Code :
1
2
SELECT id_a_pere,id_a_mere
FROM ENFANT
Moyenne de la qté de viande servie dans le menu des singes
Code :
1
2
3
SELECT AVG(quteviande_menu)
FROM MENU
WHERE FAMILLE='singe'

Merci par avance pour votre aide
Bonne journée
Gap
gap34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 14h52   #2
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 163
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 163
Points : 21 855
Points : 21 855
Une petite erreur s'est glissée dans la définition de votre table (ligne bégayée...)

Code :
1
2
3
4
5
6
7
8
9
10
CREATE TABLE ANIMAL
(
  id_a        CHAR(6)     NOT NULL PRIMARY KEY
, nom_a       VARCHAR(20) NOT NULL
, datenaiss_a DATE(10)    NOT NULL
, id_menu     CHAR(6)     NOT NULL REFERENCES MENU   (ID_MENU)
, id_endroit  CHAR(6)     NOT NULL REFERENCES ENDROIT(ID_ENDROIT)
, race_fam    VARCHAR(30) NOT NULL REFERENCES FAMILLE(RACE_FAM)
, ori_fam     VARCHAR(30) NOT NULL REFERENCES FAMILLE(ORI_FAM)
);
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 14h57   #3
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 163
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 163
Points : 21 855
Points : 21 855
Citation:
Envoyé par gap34 Voir le message

Liste de tous les animaux qui sont parents et le nombre d'enfants qu'ils ont
Code :
1
2
3
SELECT nom_a
FROM ANIMAL
GROUP BY ENFANT
La requête est fausse : GROUP BY ne doit s'employer que si vous avez des agrégats (SUM, COUNT...)
Il faut en sus faire une joinnture pour atteindre la table ENFANT...

Citation:
Liste des animaux dont les deux parents sont connus
Code :
1
2
SELECT id_a_pere,id_a_mere
FROM ENFANT
Il faut faire une double jointure

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h09   #4
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 667
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 : 13 667
Points : 25 516
Points : 25 516
Envoyer un message via MSN à CinePhil
Citation:
ANIMAL (id_a,nom_a, datenaiss_a, id_menu, id_endroit, race_fam, ori_fam)FAMILLE(race_fam,ori_fam)
Il devrait y avoir une clé étrangère référençant l'identifiant de la famille dans la table ANIMAL et un identifiant dans la table FAMILLE.

Citation:
Envoyé par gap34
Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE ANIMAL
(
  id_a        CHAR(6)     NOT NULL PRIMARY KEY
, nom_a       VARCHAR(20) NOT NULL
, datenaiss_a DATE(10)    NOT NULL
, id_menu     CHAR(6)     NOT NULL REFERENCES MENU   (ID_MENU)
, id_endroit  CHAR(6)     NOT NULL REFERENCES ENDROIT(ID_ENDROIT)
, race_fam    VARCHAR 20) NOT NULL
, race_fam    VARCHAR(30) NOT NULL REFERENCES FAMILLE(RACE_FAM)
, ori_fam     VARCHAR(30) NOT NULL REFERENCES FAMILLE(ORI_FAM)
);
Mauvais choix du type pour la clé primaire.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
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 la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h01.


 
 
 
 
Partenaires

Hébergement Web