Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Philippe TROTIN [MS]
Bonsoir,
Voici un exemple mais il y a peut être plus simple :
<<
DECLARE @ADRESSES TABLE(AD_id INT, eleve_ID int, voie varchar(100), ville varchar(100))
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(1, 1, 'aaa', 'paris') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(2, 1, 'bbb', 'lyon') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(3, 1, 'ccc', 'marseille') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(4, 2, 'aaa2', 'paris') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(5, 2, 'bbb2', 'lyon')
-- Avant SELECT * FROM @ADRESSES
UPDATE @ADRESSES SET voie = z2.voie, ville = z2.ville FROM @ADRESSES a INNER JOIN (SELECT DISTINCT MAX(AD_id) AS AD_id, eleve_ID FROM @ADRESSES GROUP BY eleve_ID) z1 ON a.AD_id = z1.AD_id INNER JOIN (SELECT x.* FROM @ADRESSES x INNER JOIN (SELECT DISTINCT MIN(AD_id) AS AD_id, eleve_ID FROM @ADRESSES GROUP BY eleve_ID) y ON x.AD_id = y.AD_id) z2 ON z1.eleve_ID = z2.eleve_ID
-- Apres SELECT * FROM @ADRESSES
Cordialement _______________________________
Philippe TROTIN Microsoft Services France _______________________________
"olivier" a écrit dans le message de groupe de discussion :
bonjour,
dans ma tables ADRESSES j'ai des adresses par éléves (il peut y en avoir plusieurs..) TABLE ADRESSES
AD_id INT eleve_ID int voie varchar() ville varchar()
pour chaque éléve :
je voudrais recopier dans la dernière adresse saisie (donc avec l'id le plus élévé) le contenu de la 1ère adresse saisie (donc avec l'id le plus bas)
j'espère mes explication assez claires ;-) merci
Bonsoir,
Voici un exemple mais il y a peut être plus simple :
<<
DECLARE @ADRESSES TABLE(AD_id INT, eleve_ID int, voie varchar(100), ville
varchar(100))
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(1, 1, 'aaa',
'paris')
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(2, 1, 'bbb',
'lyon')
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(3, 1, 'ccc',
'marseille')
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(4, 2, 'aaa2',
'paris')
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(5, 2, 'bbb2',
'lyon')
-- Avant
SELECT * FROM @ADRESSES
UPDATE @ADRESSES
SET voie = z2.voie, ville = z2.ville
FROM @ADRESSES a
INNER JOIN (SELECT DISTINCT MAX(AD_id) AS AD_id, eleve_ID FROM @ADRESSES
GROUP BY eleve_ID) z1 ON a.AD_id = z1.AD_id
INNER JOIN (SELECT x.* FROM @ADRESSES x INNER JOIN (SELECT DISTINCT
MIN(AD_id) AS AD_id, eleve_ID FROM @ADRESSES GROUP BY eleve_ID) y ON x.AD_id
= y.AD_id) z2 ON z1.eleve_ID = z2.eleve_ID
-- Apres
SELECT * FROM @ADRESSES
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"olivier" <aa@aa.fr> a écrit dans le message de groupe de discussion :
OIWLb7naIHA.5160@TK2MSFTNGP05.phx.gbl...
bonjour,
dans ma tables ADRESSES j'ai des adresses par éléves (il peut y en avoir
plusieurs..)
TABLE ADRESSES
AD_id INT
eleve_ID int
voie varchar()
ville varchar()
pour chaque éléve :
je voudrais recopier dans la dernière adresse saisie (donc avec l'id le
plus élévé)
le contenu de la 1ère adresse saisie (donc avec l'id le plus bas)
Voici un exemple mais il y a peut être plus simple :
<<
DECLARE @ADRESSES TABLE(AD_id INT, eleve_ID int, voie varchar(100), ville varchar(100))
INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(1, 1, 'aaa', 'paris') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(2, 1, 'bbb', 'lyon') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(3, 1, 'ccc', 'marseille') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(4, 2, 'aaa2', 'paris') INSERT INTO @ADRESSES(AD_id, eleve_ID, voie, ville) VALUES(5, 2, 'bbb2', 'lyon')
-- Avant SELECT * FROM @ADRESSES
UPDATE @ADRESSES SET voie = z2.voie, ville = z2.ville FROM @ADRESSES a INNER JOIN (SELECT DISTINCT MAX(AD_id) AS AD_id, eleve_ID FROM @ADRESSES GROUP BY eleve_ID) z1 ON a.AD_id = z1.AD_id INNER JOIN (SELECT x.* FROM @ADRESSES x INNER JOIN (SELECT DISTINCT MIN(AD_id) AS AD_id, eleve_ID FROM @ADRESSES GROUP BY eleve_ID) y ON x.AD_id = y.AD_id) z2 ON z1.eleve_ID = z2.eleve_ID
-- Apres SELECT * FROM @ADRESSES
Cordialement _______________________________
Philippe TROTIN Microsoft Services France _______________________________
"olivier" a écrit dans le message de groupe de discussion :
bonjour,
dans ma tables ADRESSES j'ai des adresses par éléves (il peut y en avoir plusieurs..) TABLE ADRESSES
AD_id INT eleve_ID int voie varchar() ville varchar()
pour chaque éléve :
je voudrais recopier dans la dernière adresse saisie (donc avec l'id le plus élévé) le contenu de la 1ère adresse saisie (donc avec l'id le plus bas)