Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/07/2011, 12h52   #1
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Par défaut Insert plusieurs champs vers un seul champ

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:
Code :
1
2
3
 
INSERT INTO tblDest ( date, journée, champ )
SELECT [TOTO].date, [TOTO].journée, [champ1] & "-" & [champ2] AS champ FROM [TOTO];
Qui fonctionne
Comment faire pour que j'inserre en même temps, dans la même requête SQL
Code :
1
2
3
 
[champ1] & "-" & [champ3]
[champ1] & "-" & [champ4]
Merci d'avance de votre aide
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 16h36   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Veux-tu créer 3 energistrements en sortie ou un seul qui présente sur 3 lignes tes données ?

C-à-d :

Date, Journée, Champ1 - Champ2
Date, Journée, Champ1 - Champ3
Date, Journée, Champ1 - Champ4

ou

Date, Journée,
Champ1 - Champ2
Champ1 - Champ3
Champ1 - Champ4
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 18h15   #3
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour,

Je viens de faire un test sur une requête SELECT et j'arrive au résultat attendu.

Donc dans ta requête, tu places deux fois ta table d'origine et tu construis ta requête (suivant les alias que tu veux), sur cet exemple :
Code :
1
2
3
SELECT [TOTO].Date, [TOTO].journée, [TOTO].[Champ1] & " -" & [TOTO].[Champ2] AS A, [TOTO].[Champ1] & " -" & [TOTO_1].[Champ3] AS B, [TOTO].[Champ1] & " -" & [TOTO_1].[Champ4] AS C
FROM TOTO, TOTO AS TOTO_1
GROUP BY [TOTO].Date, [TOTO].journée, [TOTO].[Champ1] & " -" & [TOTO].[Champ2], [TOTO].[Champ1] & " -" & [TOTO_1].[Champ3], [TOTO].[Champ1] & " -" & [TOTO_1].[Champ4];
ça marche aussi sans le regroupement en n'oubliant pas les jointures pour les champs Date et journée.

Cordialement.
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 21h53   #4
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonsoir marot_r et paidge,

Pour répondre à MAROT-T, je désire avoir ceux-ci:
Citation:
Date, Journée, Champ1 - Champ2
Date, Journée, Champ1 - Champ3
Date, Journée, Champ1 - Champ4
Et à paidge,.
Je testerai son code demain matin.

Je vous tiens informé du résultat attendu.
Merci à vous deux.

Bonne soirée
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 22h08   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Obtenir 3 enregistrements à partir d'un seul ne me parait pas simple en SQL.

Si tu as un moyen de les distinguer tu pourrais utiliser un Iff(), quelque chose du genre

Code sql :
iif(taCondition1; TOTO].[Champ1] & " -" & [TOTO].[Champ2]; iif(TaCondition2; TOTO].[Champ1] & " -" & [TOTO].[Champ3]; TOTO].[Champ1] & " -" & [TOTO].[Champ4]))

Ou alors une fonction public mais cela nécessite aussi un critère de sélection.

Personnelement je ferai cela avec un petit bout de VBA. Si tu as peu d'enregistrement cela ne se sentira même pas.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 22h09   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Évidement tu peux aussi faire 3 requêtes, une pour chaque combinaison.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 22h29   #7
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
bonsoir,

avec une requête UNION peut-être:

Code sql :
1
2
3
4
5
6
7
8
9
INSERT INTO tblDest ([date] , journee, champ )
 
SELECT [date], journee, champ FROM
 
(SELECT [date], journee, (champ1 & "-" & champ2) AS champ FROM Toto
union
SELECT [date], journee, (champ1 & "-" & champ3) AS champ FROM Toto
union
SELECT [date], journee, (champ1 & "-" & champ4) AS champ FROM Toto);
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 09h01   #8
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonsoir marot_r, paidge et f_leb,

J'ai testé le code de f_leb, qui m'avait l'air sympa.
J'ai une erreur de syntaxe dans la clause From
j'ai essayé ceux-ci:
Code :
1
2
3
4
5
6
7
8
9
 
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];
et
Code :
1
2
3
4
5
 
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: j'ai la même erreur????
J'ai même essayé avec "Select Distinct" sur le 1er select.
Une question: L'UNION ne doit pas se faire sur une autre table?

Je vais voir avec le code de paidge

Merci d'avance de votre aide
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 10h19   #9
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
bonjour Christian,

oui, je ne sais pas pourquoi mais if faut un étage supplémentaire:

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
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]
) ;

sauf si tu dois éliminer les doublons, préfère plutôt UNION ALL.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/07/2011, 10h23   #10
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
re,

Je viens d'effectuer un test en effectuant une requête Union, mais sans le code
Code :
1
2
 
INSERT INTO tblDest ( date, journée, champ )
J'ai bien le résultat attendu.
Il faut que je passe par une requête supplémentaire d'ajout.

Y a t'il moyen d'effectuer cette opération en une seule requête, ou d'effectuer celle-ci en VBA?

Quand au code de paidge, j'ai des soucis (bloque Access)....
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 11h07   #11
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Re Fabien,

C'est OK

Ca fonctionne correctement.
Merci de ton aide.

Bonne vacances si tu pars dans les prochains jours.
Pour moi, encore 3 semaines à patienter.
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web