Requête SQL: Insert plusieurs champs

rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015 - 19 juil. 2011 à 15:32
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

5 réponses

cs_Sbt Messages postés 47 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 22 mai 2012 1
19 juil. 2011 à 17:05
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
0
rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015
19 juil. 2011 à 21:58
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
0
rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015
20 juil. 2011 à 08:49
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
0
cs_Sbt Messages postés 47 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 22 mai 2012 1
20 juil. 2011 à 11:06
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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.
0
Rejoignez-nous