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 :

Instruction INSERT et relations


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 33
    Points
    33
    Par défaut Instruction INSERT et relations
    Bonjour à tous,
    Je suis débutant en BDD, et il me semble avoir raté queque chose
    J'ai à ma disposition une table 'PROJET' et une table 'DOCUMENT'.
    Un projet peut être défini par 0 à n documents. Un document défini 1 à n projet.
    J'ai donc une table de jointure 'EST_DEFINI_PAR' entre les deux.
    J'arrive à créer un projet en utilisant l'instruction 'INSERT'.
    J'arrive à créer un document en utilisant également l'instruction INSERT.
    Mais ma table de jointure, je ne sais pas trop comment l'utiliser et elle reste vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    NSERT INTO PROJET (nom_prj, phase_prj, indice_base_prj, transfert_prj, id_type_tprj, id_etat_eprj, id_origine_o)
    VALUES (	'toto',
    			1,
    			'Y:\\',
    			0,
    			0,
    			1,
    			2);
     
    INSERT INTO	DOCUMENT (DocumentExtension, DocumentName, Document)
    SELECT	'zip' AS DocumentExtension,
    		'Documentation2' AS DocumentName,
    		 * FROM OPENROWSET(BULK 'T:\\Documentation.zip', SINGLE_BLOB) As Document;
     
    GO
    Merci d'avance pour vos conseils,
    Antoine

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut
    Tu peux déclarer deux variables, récupérer @@identity successivement dans les variables après les INSERT puis faire un INSERT avec les deux variables dans la table de jointure.
    @+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 33
    Points
    33
    Par défaut
    Merci pour la réponse rapide.

    Donc si j'ai bien compris je dois faire 3 requêtes :
    1. Requête INSERT pour ajouter mon projet

    1. Requête INSERT pour ajouter mon document

    1. Requête INSERT pour remplir ma table de jointure


    Tu peux déclarer deux variables, récupérer @@identity successivement dans les variables
    C'est quoi @@identity ? Et quoi vont me servir les variables ?

    Sachant que j'ultile l'auto incrément, comment récupérer les id du projet et du document pour les insérer dans ma table de jointure ?

  4. #4
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par antoine2641 Voir le message
    Sachant que j'ultile l'auto incrément, comment récupérer les id du projet et du document pour les insérer dans ma table de jointure ?
    Justement, @@identity est une variable système contenant le dernier incrément.
    1. INSERT dans T1;
    2. @var1=@@identity;
    3. INSERT dans T2;
    4. @var2=@@identity;
    5. INERT INTO T3 VALUES(@var1,@var2);

    @+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 33
    Points
    33
    Par défaut
    Ok merci beaucoup, j'ai compri le principe, voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    INSERT INTO PROJET (nom_prj, phase_prj, indice_base_prj, transfert_prj, id_type_tprj, id_etat_eprj, id_origine_o)
    VALUES (	'toto',
    			1,
    			'Y:\\',
    			0,
    			0,
    			1,
    			2);
    GO	
     
    DECLARE @idProjet AS int;
    SET @idProjet = @@IDENTITY;
     
    INSERT INTO	DOCUMENT (DocumentExtension, DocumentName, Document)
    SELECT	'zip' AS DocumentExtension,
    		'Documentation2' AS DocumentName,
    		 * FROM OPENROWSET(BULK 'T:\\Documentation.zip', SINGLE_BLOB) As Document;
     
    GO
     
    DECLARE @idDocument AS int;
    SET @idDocument = @@IDENTITY;
     
    INSERT INTO EST_DEFINI_PAR (id_objet_prj, id_document_d) VALUES (@idProjet,@idDocument);
    GO
    Par contre j'obtient l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Msg 137, Niveau 15, État 2, Ligne 5
    Must declare the scalar variable "@idProjet".
    Tu as une idée sur l'origine de l'erreur ?

  6. #6
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut
    Un seul GO à la fin!
    @+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2008, 02h54
  2. [Debutant] Instruction INSERT
    Par javaboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2007, 11h37
  3. [Conception] Un switch bloque une instruction INSERT INTO
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/08/2006, 23h35
  4. Réponses: 7
    Dernier message: 30/03/2006, 07h49
  5. PB Instruction INSERT
    Par tissard dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/12/2005, 12h18

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