2016-09-08 1 views
-1

I ont deux tableaux T1 et T2Comment mettre à jour les tables

T1

Id name open receive close 
1 jon 5000 0  5000 
2 jim 6000 0  6000 
3 ben 9000 0  9000 

T2

Id name receive 
1 jon 500 
3 ben 200 
2 jim 700 
1 jon 500 
2 jim 700 
3 ben 100 

chose d'abord que je veux comment commander T2 avec requête de mise à jour.

Id name receive 
1 jon 500 
1 jon 500 
2 jim 700 
2 jim 700 
3 ben 100 
3 ben 200 

Après cela, je veux mettre à jour T1 comme ce

Id name open receive close 
1 jon 5000 1000 4000 
2 jim 6000 1400 4600 
3 ben 9000 300 8700 

J'utilise SQLite

+1

Vous n'avez pas posé la même question hier? http://stackoverflow.com/questions/39367981/how-to-sum-one-column-value-to-other-column-value – redneb

+0

Cette question est différente –

Répondre

2

Première question

select * from T2 order by Id, receive 

Deuxième question

update T1 
set T1.receive = T2.receive, 
    T1.close = T1.open - T2.receive 
from T1 
inner join (select Id, sum(receive) receive from T2 group by Id) T2 
    on T1.Id = T2.Id 
+0

est-il possible lorsque la nouvelle entrée entrée dans T2, il met également à jour le T2 par ordre –

+0

Qu'est-ce que vous voulez dire mettre à jour T2? Tu veux dire le premier SQL? il récupère uniquement les données de T2; Pour le 2ème SQL, il mettra à jour T1 quand vous exécutez le SQL seulement, si vous voulez le faire automatiquement, vous avez besoin d'un déclencheur – Prisoner

1

Je ne sais pas pourquoi mettre à jour la table parce que vous pouvez utiliser pour sélectionner par article comme celui-ci

Select * from #T2 
Order By Id ASC 

pour la troisième Capture d'écran vous pouvez utiliser cette

Update t1 
Set T1.[receive] = T2.[receive] 
,T1.[close] = T1.[open]- T2.[receive] 
from #T1 t1 
inner join(
Select t2.ID,t2.name,Sum(t2.[receive]) AS [receive] from #T2 
Group By ID,name) T2 
on T1.Id=T2.Id 

Si ont utilisé l'exemple folleoinf

Create Table #T1 (Id int,name nvarchar(255), [open] int,[receive] int, [close] int) 

Insert into #T1 Values 
(1,'jon',5000,0,5000), 
(2,'jim',6000,0,6000), 
(3,'ben',9000,0,9000) 


Create Table #T2(Id int,name nvarchar(255),[receive] int) 

Insert into #T2 Values 
(1,'jon',500), 
(3,'ben',200), 
(2,'jim',700), 
(1,'jon',500), 
(2,'jim',700), 
    (3,'ben',100)