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 :

Requête d'insertion multi-données!


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Par défaut Requête d'insertion multi-données!
    Bonjour à tous,

    J'ai une table abonne(numabonne,nomabonne) et une table livre(numlivre,titre) avec la relation entre ces deux tables qui devient également une table emprunt(numemprunt,numabonne,numlivre,dateemprunt). A présent je souhaiterai savoir quelle est la requête pour enregistrer un emprunt (sachant qu'il peut y avoir plusieurs livre pour un même emprunt) de telle sorte que je puisse avoir (lors de la consultation) la liste des livres que l'abonné a emprunté(il peut en emprunté plusieurs en une seule fois). Merci d'avance. Je coince grave depuis .

    Cordialement.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par js8bleu Voir le message
    (sachant qu'il peut y avoir plusieurs livre pour un même emprunt)
    Si tu veux dire par là que pour un seul numemprunt il peut y avoir plusieurs numlivre pour le même numabonne, il y a une erreur de conception. Il faudrait que la clé primaire de ta table emprunt soit constituée du triplet (numemprunt, numabonne, numlivre). Et dans ce cas bien sûr, numemprunt n'est pas auto-incrémenté.

    On peut aussi voir les choses différemment...
    Tu as d'abord décrit l'association :
    J'ai une table abonne(numabonne,nomabonne) et une table livre(numlivre,titre) avec la relation entre ces deux tables
    Ce qui donne le schéma MCD :
    Abonné -0,n----Emprunter----0,n- Livre

    D'où il découle les tables :
    abonne(numabonne,nomabonne)
    livre(numlivre,titre)
    emprunt(numabonne,numlivre,dateemprunt)

    Nota : J'ai mis dateemprunt dans la clé primaire car j'ai supposé que rien n'interdit à un abonné d'emprunter plusieurs fois le même livre à des dates différentes.

    Si tu transformes la table associative emprunt en une table avec une clé primaire mono-colonne de type entier auto-incrémenté (numemprunt), alors tu passes au schéma MCD suivant :
    Abonné -0,n----Effectuer----1,1- Emprunt -1,n----Concerner----0,n- Livre

    D'où il découle les tables :
    abonne(numabonne,nomabonne)
    livre(numlivre,titre)
    emprunt(numemprunt, numabonne, dateemprunt)
    concerner(numemprunt, numlivre, ...)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 528
    Par défaut
    Bonsoir,

    CinePhil Merci pour ton aide. En effet c'est ceci qui m'intéresse :
    Pour un seul numemprunt il peut y avoir plusieurs numlivre pour le même numabonne.
    . Donc, si j'ai bien compris il me faut 4 tables dont :

    1 - Abonné(numabonne, nomabonne)
    2 - Livre(numlivre, titre)
    3 - Emprunt(numemprunt,dateemprunt)
    4 - Concerne(numemprunt, numlivre)

    Merci de me confirmer la faisabilité pour les 4 tables. Je voudrai également savoir (si possible) si je peux le faire en 3 tables du genre :


    1 - Abonné(numabonne, nomabonne)
    2 - Livre(numlivre, titre)
    3 - Emprunt(codeemprunt, numabonne, numlivre, numemprunt, dateemprunt)

    avec codeemprunt comme clé primaire de la table emprunt (pourquoi pas auto-incrémentée ou numérotée par code) et numemprunt de manière numérotée par code.

    Désolé mais je suis un "peu" dur de la feuille. Merci d'avance ton aide et tes éclaircissements une fois de plus. Excellente soirée.

    Cordialement.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par js8bleu Voir le message
    Donc, si j'ai bien compris il me faut 4 tables dont :

    1 - Abonné(numabonne, nomabonne)
    2 - Livre(numlivre, titre)
    Jusque là ça va !
    3 - Emprunt(numemprunt,dateemprunt)
    Où est passé le lien avec l'abonné ?
    4 - Concerne(numemprunt, numlivre)
    numemprunt ET numlivre sont deux clés étrangères formant ensemble la clé primaire de la table.

    Je voudrai également savoir (si possible) si je peux le faire en 3 tables du genre :


    1 - Abonné(numabonne, nomabonne)
    2 - Livre(numlivre, titre)
    3 - Emprunt(codeemprunt, numabonne, numlivre, numemprunt, dateemprunt)

    avec codeemprunt comme clé primaire de la table emprunt (pourquoi pas auto-incrémentée ou numérotée par code) et numemprunt de manière numérotée par code.
    Pourquoi pas mais :
    - c'est quoi "numérotée par code" ?
    - à quoi sert le numemprunt si ce n'est pas la clé primaire ?

    La structure en 4 tables avec les bonnes clés primaires et étrangère est meilleure car elle décrit mieux la réalité.

    Sauf si vous avez un besoin de gestion particulier sur ce sujet, le numemprunt n'est qu'une numérotation interne à la base de données qui peut être totalement invisible pour les utilisateurs.

    Monsieur Jean Dupont, abonné n° 147 (c'est écrit sur sa carte d'abonné) rapporte ses livres. Je veux vérifier s'il n'en a pas oublié.
    Au passage, il manque une colonne pour dire qu'il a rendu les livres, par exemple la dateretour dans la table Concerne
    Quels sont tous les livres qu'il a empruntés et pas encore rapportés :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT l.* 
    FROM Livre l 
    INNER JOIN Concerne c ON l.numlivre = c.numlivre
     INNER JOIN Emprunt e ON c.numemprunt = e.numemprunt 
    WHERE e.numabonne = 147 AND c.dateretour IS NULL
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/09/2010, 16h32
  2. [MySQL] Insertion de données multi-tables
    Par pp_le_moko dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/12/2009, 00h49
  3. select et insert multi base de données
    Par calvirita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/04/2009, 18h19
  4. Requête d'insertion dans une base de données
    Par Kalion dans le forum VB.NET
    Réponses: 5
    Dernier message: 25/02/2009, 14h45
  5. Réponses: 2
    Dernier message: 16/05/2006, 11h52

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