Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui ont
fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui ont
fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui ont
fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Quel serait l'état final de la table @operations que tu veux obtenir?
--
Bien Cordialement
Med Bouchenafa
"Clark [MVP CRM]" wrote in message
news:Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Quel serait l'état final de la table @operations que tu veux obtenir?
--
Bien Cordialement
Med Bouchenafa
"Clark [MVP CRM]" <clark@nospam.nospam> wrote in message
news:75872E90-2ABE-48CF-A907-9E7F94233106@microsoft.com...
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Quel serait l'état final de la table @operations que tu veux obtenir?
--
Bien Cordialement
Med Bouchenafa
"Clark [MVP CRM]" wrote in message
news:Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
Quelque chose comme ça
idOperation montant datevaleur idCompte idCompteOrigine
1 123,36 2009-06-12 2 1
2 123,36 2009-06-12 2 3
3 123,36 2009-06-12 2 4
Pour détailler j'ai 3 versements identiques de 3 comptes différents sur le
même compte.
Je dois modifer ma table @operations pour indiquer la provenance du
versement. Comme ce sont les 3 mêmes, peu importe l'ordre d'affectation,
mais il faut que j'arrive sur l'update à affecter à chaque fois un compte
origine différent.
J'espère arriver à me faire comprendre!
Merci
Geoffroy
"Med Bouchenafa" a écrit dans le message de
news:Quel serait l'état final de la table @operations que tu veux obtenir?
--
Bien Cordialement
Med Bouchenafa
"Clark [MVP CRM]" wrote in message
news:Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
Quelque chose comme ça
idOperation montant datevaleur idCompte idCompteOrigine
1 123,36 2009-06-12 2 1
2 123,36 2009-06-12 2 3
3 123,36 2009-06-12 2 4
Pour détailler j'ai 3 versements identiques de 3 comptes différents sur le
même compte.
Je dois modifer ma table @operations pour indiquer la provenance du
versement. Comme ce sont les 3 mêmes, peu importe l'ordre d'affectation,
mais il faut que j'arrive sur l'update à affecter à chaque fois un compte
origine différent.
J'espère arriver à me faire comprendre!
Merci
Geoffroy
"Med Bouchenafa" <com.hotmail@bouchenafa> a écrit dans le message de
news:E20AD1AE-5829-478B-AEE1-BC501EF5CAB2@microsoft.com...
Quel serait l'état final de la table @operations que tu veux obtenir?
--
Bien Cordialement
Med Bouchenafa
"Clark [MVP CRM]" <clark@nospam.nospam> wrote in message
news:75872E90-2ABE-48CF-A907-9E7F94233106@microsoft.com...
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
Quelque chose comme ça
idOperation montant datevaleur idCompte idCompteOrigine
1 123,36 2009-06-12 2 1
2 123,36 2009-06-12 2 3
3 123,36 2009-06-12 2 4
Pour détailler j'ai 3 versements identiques de 3 comptes différents sur le
même compte.
Je dois modifer ma table @operations pour indiquer la provenance du
versement. Comme ce sont les 3 mêmes, peu importe l'ordre d'affectation,
mais il faut que j'arrive sur l'update à affecter à chaque fois un compte
origine différent.
J'espère arriver à me faire comprendre!
Merci
Geoffroy
"Med Bouchenafa" a écrit dans le message de
news:Quel serait l'état final de la table @operations que tu veux obtenir?
--
Bien Cordialement
Med Bouchenafa
"Clark [MVP CRM]" wrote in message
news:Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui ont
fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui ont
fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui ont
fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Utiliser un UPDATE est til obligatoire ? Dans ce cas de figure, le plus
simple serait probablement de supprimer/résinsérer les lignes concernées
plutôt que de faire un update. Mais le cas réel est sans doute plus
complexe ?
Si ce n'est pas un exercice ou une opération tout à fait exceptionnelle,
je pense qu'il y a un problème de conception. L'opération devrait sans
doute garder trace du versement dont elle est issue (avec des PK donc)
pour pouvoir la mettre à jour si le versement est modifiée. Cette
modification devient alors bien plus facile qu'elle que soit la donnée
modifiée...
--
Patrice
"Clark [MVP CRM]" a écrit dans le message de groupe
de discussion :Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Utiliser un UPDATE est til obligatoire ? Dans ce cas de figure, le plus
simple serait probablement de supprimer/résinsérer les lignes concernées
plutôt que de faire un update. Mais le cas réel est sans doute plus
complexe ?
Si ce n'est pas un exercice ou une opération tout à fait exceptionnelle,
je pense qu'il y a un problème de conception. L'opération devrait sans
doute garder trace du versement dont elle est issue (avec des PK donc)
pour pouvoir la mettre à jour si le versement est modifiée. Cette
modification devient alors bien plus facile qu'elle que soit la donnée
modifiée...
--
Patrice
"Clark [MVP CRM]" <clark@nospam.nospam> a écrit dans le message de groupe
de discussion : 75872E90-2ABE-48CF-A907-9E7F94233106@microsoft.com...
Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy
Utiliser un UPDATE est til obligatoire ? Dans ce cas de figure, le plus
simple serait probablement de supprimer/résinsérer les lignes concernées
plutôt que de faire un update. Mais le cas réel est sans doute plus
complexe ?
Si ce n'est pas un exercice ou une opération tout à fait exceptionnelle,
je pense qu'il y a un problème de conception. L'opération devrait sans
doute garder trace du versement dont elle est issue (avec des PK donc)
pour pouvoir la mettre à jour si le versement est modifiée. Cette
modification devient alors bien plus facile qu'elle que soit la donnée
modifiée...
--
Patrice
"Clark [MVP CRM]" a écrit dans le message de groupe
de discussion :Bonjour
J'ai un petit souci avec une requête.
Plutôt que de longues explications, j'ai fait un exemple
declare @compte table
(idCompte int identity not null,
libelle char(16)not null)
insert into @compte (libelle) values ('Compte1'), ('Compte2'),
('Compte3'), ('Compte4')
declare @operations table
(idOperation int identity not null,
montant money not null,
datevaleur date not null,
idCompte int not null,
idCompteOrigine int null)
insert into @operations
(montant, datevaleur, idCompte)
values
(123.36, '12/06/2009', 2)
,(123.36, '12/06/2009',2)
,(123.36, '12/06/2009',2)
declare @versements table
(idVersement int identity not null,
montant money not null,
datevaleur date not null,
idCompteOrigine int not null,
idCompteVersement int null)
insert into @versements
(montant, datevaleur, idCompteOrigine, idCompteVersement)
values
(123.36, '12/06/2009', 1,2)
,(123.36, '12/06/2009',3,2)
,(123.36, '12/06/2009',4,2)
select * from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur)
update @operations
set idCompteOrigine = c.idCompte
from @compte c
inner join @versements v on c.idCompte = v.idCompteOrigine
inner join @operations o on o.idOperation = (select top 1 o2.idOperation
from @operations o2
where v.montant = o2.montant and v.datevaleur = o2.datevaleur and
v.idCompteVersement = o2.idCompte)
select * from @operations
Je veux mettre à jour ma table @operations avec les id des comptes qui
ont fait les versements, seulement les 3 versements étant strictement
identiques je n'arrive pas à associer chaque opération avec un compte
différent à chaque fois.
Quelqu'un saurait-il comment faire?
Merci
Geoffroy