2013-12-03 4 views
1

У меня есть этот запрос:Простой SQL поможет обновить таблицу

select orders.ID, books.Quantity from orders, Books 
where customerid = '52467' 
and Status = 'ready' 
and orders.ID = books.OrderID 

Я хочу обновить books.quantity = «1»

Update Books 
SET books.Quantity = '1' 

Просто не знаю, как написать запрос.

+0

Какой вкус sql вы используете? MySQL? SQL-сервер? –

+0

MS SQL - это то, что я использую – JeffreyLazo

+0

. Вы всегда должны добавлять конкретные теги к тегам вашего вопроса. –

ответ

2

В SQL-SERVER вы можете сделать:

update books 
set books.Quantity = '1' 
from books b 
inner join orders o on o.ID = b.OrderID  
where o.customerid = '52467' 
    and o.status = 'ready' 
+0

Очень незначительный каламбур, я бы изменил первую строку на 'update Books'. Мне не нравится искать полный запрос (который иногда очень длинный), чтобы найти, какая таблица фактически обновляется. –

+0

@PhilipKelley. Это справедливый аргумент для редактирования, который я могу сделать :) –

+0

Вот что SQL возвращает отчет при выполнении этого запроса: Msg 4104, Level 16, State 1, Line 1 Идентификатор из нескольких частей «b.Quantity» может не связаны. – JeffreyLazo

0
UPDATE 
    Books 
SET 
    Books.Quantity = '1' 
FROM 
    Books 
INNER JOIN 
    Orders 
ON 
    Books.orderID = Orders.ID 
WHERE Orders.customerid = '52467' 
    and Orders.status = 'ready' 

это то, что вам нужно? Если вы используете это в коде, таком как C#, тогда переместите его в хранимую процедуру, если хотите, а затем CustomerID и Status станут динамическими, так как вы будете использовать параметры.

USE [Your Database Name] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[UpdateBookQuantity] 
@CustomerID varchar(50), 
@Status varchar(50) 
AS 
UPDATE 
    Books 
SET 
    Books.Quantity = '1' 
FROM 
    Books 
INNER JOIN 
    Orders 
ON 
    Books.orderID = Orders.ID 
WHERE Orders.customerid = @customerID 
    and Orders.status = @Status 

только что вытащил его там, если это будет частая вещь, которую вам нужно сделать.

Смежные вопросы