Translate

How to update table using INNER JOIN in SQL Server 2008

CREATE TABLE [order] (in_order_id int, dt_updated datetime, bt_active bit)
CREATE TABLE [order_item] (in_order_id int, in_item_id int, dt_updated datetime, bt_active bit)

INSERT INTO dbo.[order] (in_order_id, dt_updated, bt_active) VALUES (101, GETDATE(), 1)
INSERT INTO dbo.[order] (in_order_id, dt_updated, bt_active) VALUES (102, GETDATE(), 1)
INSERT INTO dbo.[order] (in_order_id, dt_updated, bt_active) VALUES (103, GETDATE(), 1)
INSERT INTO dbo.[order] (in_order_id, dt_updated, bt_active) VALUES (104, GETDATE(), 1)
INSERT INTO dbo.[order] (in_order_id, dt_updated, bt_active) VALUES (105, GETDATE(), 1)

INSERT INTO dbo.[order_item] (in_order_id, in_item_id, dt_updated, bt_active) VALUES (101, 201, GETDATE(), 1)
INSERT INTO dbo.[order_item] (in_order_id, in_item_id, dt_updated, bt_active) VALUES (101, 202, GETDATE(), 1)
INSERT INTO dbo.[order_item] (in_order_id, in_item_id, dt_updated, bt_active) VALUES (102, 203, GETDATE(), 1)
INSERT INTO dbo.[order_item] (in_order_id, in_item_id, dt_updated, bt_active) VALUES (103, 204, GETDATE(), 1)
INSERT INTO dbo.[order_item] (in_order_id, in_item_id, dt_updated, bt_active) VALUES (104, 205, GETDATE(), 1)

SELECT * FROM dbo.[order]

UPDATE a SET a.bt_active = 0
FROM dbo.[order] a
INNER JOIN dbo.[order_item] b ON a.in_order_id = b.in_order_id
WHERE b.in_item_id = 204

[Above query will update [order] table where in_order_id is 103 as this order id has 204 item id in order_item table]

SELECT * FROM dbo.[order]

No comments:

Post a Comment