Tedi telah diberikan satu teka-teki mencabar.
Bagaimanakah untuk masukkan data daripada 3 table ke dalam satu table sahaja menggunakan SQL statement?
Ini adalah hasil perahan otak Tedi, menggunakan stored procedure dalam MS SQL Server.
Ideanya adalah untuk loop table tu satu persatu dan assignkan setiap value ke dalam variable sementara, dan kemudian masukkan kesemuanya ke dalam satu table.
Untuk loop Tedi gunakan cursor yang masalahnya adalah perlu diisytiharkan secara berasingan dalam blok masing-masing.
Ini adalah contoh hasil kerja Tedi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
USE NamaDatabase GO DELETE NamaDatabase.dbo.NamaTableDestinasi GO DROP PROC NamaStoredProcedure GO CREATE PROC NamaStoredProcedure AS BEGIN SET nocount ON DECLARE @FromStation INT, @ToStation INT, @UserCategoryId VARCHAR(1) DECLARE Cursor_Pertama CURSOR FOR SELECT StationId FROM Station WHERE ServiceProviderId='XXXX' GROUP BY StationId ORDER BY StationId ASC OPEN Cursor_Pertama FETCH NEXT FROM Cursor_Pertama INTO @FromStation WHILE @@FETCH_STATUS = 0 BEGIN --- TO DECLARE Cursor_Kedua CURSOR FOR SELECT StationId FROM Station WHERE ServiceProviderId='XXXX' GROUP BY StationId ORDER BY StationId ASC OPEN Cursor_Kedua FETCH NEXT FROM Cursor_Kedua INTO @ToStation WHILE @@FETCH_STATUS = 0 BEGIN ---- user category DECLARE Cursor_Ketiga CURSOR FOR SELECT UserCatgoryID FROM NamaDatabase.dbo.UserCategory ORDER BY UserCatgoryID ASC OPEN Cursor_Ketiga FETCH NEXT FROM Cursor_Ketiga INTO @UserCategoryId WHILE @@FETCH_STATUS = 0 BEGIN -- INSERT ketiga-tiga values ke dalam NamaTableDestinasi INSERT INTO NamaDatabase.dbo.NamaTableDestinasi VALUES (@FromStation,@ToStation,@UserCategoryId) -- INSERT FETCH NEXT FROM Cursor_Ketiga INTO @UserCategoryId END CLOSE Cursor_Ketiga DEALLOCATE Cursor_Ketiga -- user category FETCH NEXT FROM Cursor_Kedua INTO @ToStation END CLOSE Cursor_Kedua DEALLOCATE Cursor_Kedua --- TO FETCH NEXT FROM Cursor_Pertama INTO @FromStation END CLOSE Cursor_Pertama DEALLOCATE Cursor_Pertama END -- SPROC GO -- Stored procedure execution - test stored procedure EXEC NamaStoredProcedure GO |
0 Ulasan
Buah cempedak di luar pagar, ambil galah tolong jolokkan.
Tedi budak baru belajar, salah tak salah tolong komenkan.