de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Kluge
Kluge
Question

Memperbarui beberapa nilai dalam satu pernyataan

Saya memiliki tabel master / detail dan ingin memperbarui beberapa nilai ringkasan di tabel master terhadap tabel detail. Saya tahu saya bisa memperbaruinya seperti ini:

update MasterTbl set TotalX = (select sum(X) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalY = (select sum(Y) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalZ = (select sum(Z) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)

Tetapi, saya ingin melakukannya dalam satu pernyataan, seperti ini:

update MasterTbl set TotalX = sum(DetailTbl.X), TotalY = sum(DetailTbl.Y), TotalZ = sum(DetailTbl.Z)
from DetailTbl
where DetailTbl.MasterID = MasterTbl.ID group by MasterID

tetapi itu tidak berhasil. Saya juga telah mencoba versi yang menghilangkan klausa "group by". Saya tidak yakin apakah saya terbentur dengan batasan database khusus saya (Advantage), atau batasan SQL saya. Mungkin yang terakhir. Adakah yang bisa membantu?

23 2008-11-14T00:35:27+00:00 3
 Kluge
Kluge
Pertanyaan edit 14 November 2008 в 12:51
Pemrograman
sql
advantage-database-server
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Charles Bretana
Charles Bretana
14 November 2008 в 2:55
2008-11-14T02:55:47+00:00
Lebih
Sumber
Sunting
#8633094

Coba ini:

 Update MasterTbl Set
    TotalX = Sum(D.X),    
    TotalY = Sum(D.Y),    
    TotalZ = Sum(D.Z)
 From MasterTbl M Join DetailTbl D
    On D.MasterID = M.MasterID

Tergantung pada database yang Anda gunakan, jika itu tidak berhasil, maka cobalah ini (ini adalah SQL non-standar tetapi legal di SQL Server):

 Update M Set
    TotalX = Sum(D.X),    
    TotalY = Sum(D.Y),    
    TotalZ = Sum(D.Z)
 From MasterTbl M Join DetailTbl D
     On D.MasterID = M.MasterID
Charles Bretana
Charles Bretana
Jawaban edit 21 Mei 2017 в 1:15
25
0
 Chris
Chris
14 November 2008 в 12:46
2008-11-14T00:46:17+00:00
Lebih
Sumber
Sunting
#8633092

Mengapa Anda melakukan grup dengan pada pernyataan pembaruan? Apakah Anda yakin itu bukan bagian yang menyebabkan kueri gagal? Coba ini:

update 
    MasterTbl
set
    TotalX = Sum(DetailTbl.X),
    TotalY = Sum(DetailTbl.Y),
    TotalZ = Sum(DetailTbl.Z)
from
    DetailTbl
where
    DetailTbl.MasterID = MasterID
5
0
Milen  A. Radev
Milen A. Radev
14 November 2008 в 1:56
2008-11-14T01:56:09+00:00
Lebih
Sumber
Sunting
#8633093

Sudahkah Anda mencoba dengan sub-kueri untuk setiap bidang:

UPDATE
    MasterTbl
SET
    TotalX = (SELECT SUM(X) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID),
    TotalY = (SELECT SUM(Y) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID),
    TotalZ = (SELECT SUM(Z) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
WHERE
    ....
 tvanfosson
tvanfosson
Jawaban edit 14 November 2008 в 3:15
3
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 7 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 6 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi