Requête SQL: Insert plusieurs champs

Messages postés
32
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
5 mars 2015
- - Dernière réponse : rch05
Messages postés
32
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
5 mars 2015
- 20 juil. 2011 à 11:13
Bonjour,

J'ai une table Toto avec les champs suivants:
Date, journée, champ1, champ2, champ3, champ4, champ5, etc

j'ai une table destination avec les champs suivants:
Date, journée, champ

J'essaye d'inserrer de la table toto vers la table destination les chammps de la facon suivantes:
- Date
- Journée
- champ1 et champ2, champ1 et champ3, champ1 et champ4 etc...
J'ai la requête suivante:
INSERT INTO tblDest ( date, journée, champ )
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ2] AS champ FROM [TOTO]; 

qui fonctionne.

Est-il possible d'ajouter dans ce code les instructions suivantes:
[champ1] & "-" & [champ3]
[champ1] & "-" & [champ4] 

Et comment faire?
Je n'y suis pas arriver.

Merci d'avance de votre aide
Afficher la suite 

5 réponses

Messages postés
49
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
22 mai 2012
1
0
Merci
Bonjour,

Si je comprend bien, avec ton exemple, pour une ligne de la table TOTO (Date, journée, champ1, champ2, champ3, champ4, champ5), tu veux 4 lignes dans la table de destination (Date, journée, champ).

TOTO
01/01/2011, "Dimanche", Chp1, Chp2, Chp3, Chp4, Chp5

Table Dest
01/01/2011, "Dimanche", Chp1-Chp2
01/01/2011, "Dimanche", Chp1-Chp3
01/01/2011, "Dimanche", Chp1-Chp4
01/01/2011, "Dimanche", Chp1-Chp5

Si c'est cela, voici une requête qui devrait répondre à ton besoin.

INSERT INTO tblDest ( date, journée, champ )
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ2] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ3] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ4] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ5] AS champ FROM [TOTO];



A+
Sbt
Commenter la réponse de cs_Sbt
Messages postés
32
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
5 mars 2015
0
Merci
Bonsoir Sbt,

C'est exactement ça que j'essaye de faire.
Je teste ton code demain, et je te tiens informé du résultat attendu.

Merci de ton aide.
Bonne soirée
Commenter la réponse de rch05
Messages postés
32
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
5 mars 2015
0
Merci
Bonjour Sbt,

J'ai testé ton code..
J'ai une erreur de syntaxe dans la clause From
j'ai essayé ceux-ci:
1)
INSERT INTO tblDest ( date, journée, champ )
SELECT [TOTO].date, [TOTO].journée, [TOTO].champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ3] AS champ FROM [TOTO];

idem: erreur dans la clause From
2)
INSERT INTO tblDest ( date, journée, champ )
SELECT [TOTO].date, [TOTO].journée, [TOTO].champ FROM
(SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ2] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ3] AS champ FROM [TOTO]);

idem: erreur dans la clause From

J'ai même essayé avec "Select Distinct" sur le 1er select.

L'UNION ne doit pas se faire sur une autre table?

Merci d'avance de ton aide
Commenter la réponse de rch05
Messages postés
49
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
22 mai 2012
1
0
Merci
Salut,
Peux tu essayer la requête :

INSERT INTO tblDest ( date, journée, champ )
SELECT date, journée, champ1 + '-' + champ2 AS champ FROM TOTO
Union
SELECT date, journée, champ1 + '-' + champ3 AS champ FROM TOTO
Union
SELECT date, journée, champ1 + '-' + champ4 AS champ FROM TOTO
Union
SELECT date, journée, champ1 + '-' + champ5 AS champ FROM TOTO;

A+.
Sbt
Commenter la réponse de cs_Sbt
Messages postés
32
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
5 mars 2015
0
Merci
Re,

Voilà j'ai trouvé.
INSERT INTO tblDest ( date, journée, champ )

SELECT date, journée, champ FROM
(
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ2] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ3] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ4] AS champ FROM [TOTO]
Union
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ5] AS champ FROM [TOTO]
) ;

Bizarrement, il faut un étage supplémentaire.. pour que cela fonctionne.

Merci de ton aide et bonne vacances si tu pars dans les prochains jours.
Commenter la réponse de rch05