2014-05-22 18 views
16

Xin lỗi đây là một câu hỏi cú pháp, nhưng trong T-SQL làm thế nào để tôi xác định trong câu lệnh INSERT trong đó DB tôi muốn INSERT và trong LEFT JOIN từ DB mà tôi muốn tham gia?T-SQL INSERT INTO với LEFT JOIN

if not exists (select * from [DB_A].[dbo.a_test]) 
create table [DB_A].[dbo.a_test] (
a int(10) , 
b int(10) , 
c varchar(200) , 
d varchar(200) , 
e varchar(200) ,    
PRIMARY KEY (a) 
) 


INSERT INTO [DB_A].[dbo.a_test] (a,b,c, d) 
VALUES dbo.products.product_info, dbo.products.product_date, dbo.products.smth, *dbo.program.program_name*, dbo.program.program_smth 
FROM [DB_B].dbo.products  
LEFT JOIN [DB_B].dbo.program 
ON dbo.program.program_name = dbo.products.product_info 

Xin lỗi vì câu hỏi noob, nhưng tôi không thể tìm thấy ví dụ phù hợp.

+2

Cú pháp tạo bảng của bạn không chính xác. Không có kiểu dữ liệu 'int (10)' trong MS SQL Server. –

Trả lời

27

Bạn muốn insert into . . . select:

INSERT INTO [DB_A].[dbo.a_test](a,b,c,d,e) --ADDED A COLUMN 
    select p.product_info, p.product_date, p.smth, pr.program_name, pr.program_smth 
    FROM [DB_B].dbo.products p LEFT JOIN 
     [DB_B].dbo.program pr 
     ON p.program_name = pr.product_info; 

Tôi cũng cố định các truy vấn để sử dụng bí danh bảng, vì vậy nó dễ dàng hơn để đọc.

+0

Số cột trong câu lệnh INSERT và câu lệnh SELECT không khớp. – Hemal

4
INSERT INTO [DB_A].[dbo.a_test] (a,b,c, d) 
SELECT dbo.products.product_info, dbo.products.product_date, dbo.products.smth, dbo.program.program_smth 
FROM [DB_B].dbo.products  
LEFT JOIN [DB_B].dbo.program 
ON dbo.program.program_name = dbo.products.product_info