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 :

Table et requêtes simples SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 4
    Points
    4
    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 :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom_a
    FROM ANIMAL
    GROUP BY ENFANT
    Liste des animaux dont les deux parents sont connus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id_a_pere,id_a_mere
    FROM ENFANT
    Moyenne de la qté de viande servie dans le menu des singes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT AVG(quteviande_menu)
    FROM MENU
    WHERE FAMILLE='singe'

    Merci par avance pour votre aide
    Bonne journée
    Gap

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Une petite erreur s'est glissée dans la définition de votre table (ligne bégayée...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par gap34 Voir le message

    Liste de tous les animaux qui sont parents et le nombre d'enfants qu'ils ont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

    Liste des animaux dont les deux parents sont connus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 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 !

Discussions similaires

  1. [vba access] Pb d'execution requête SQL (requête simple)
    Par mike2302 dans le forum VBA Access
    Réponses: 9
    Dernier message: 28/06/2007, 14h58
  2. SQL : remplacer table par requête
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/08/2006, 15h18
  3. [SQL] Pb d'insertion donnée dans table, pb requête SQL
    Par PuppeT mAsTer dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/07/2006, 11h26
  4. Création d'une table par requête SQL
    Par mister3957 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/05/2006, 09h30

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