-1

I have a problem my select worked fine without update and my update worked fine without select but when i combine both my code don't do any reaction to me ( don't work - without a error )

UPDATE Table1 
SET 
l2p= 0.207 * (SELECT DUM FROM Table2 WHERE [no] < 1389)
WHERE [no] < 1389 

thanks to see and any help

ehsan wwe
  • 71
  • 2
  • 9

2 Answers2

1

Try declaring a variable to hold the result of the SELECT statement.

DECLARE @DUM INT
SET @DUM = (SELECT ISNULL(DUM, 1) FROM Table2 WHERE [no] < 1389)

UPDATE Table1 
SET 
l2p= 0.207 * @DUM
 WHERE [no] < 1389 

If you have multiple records, this will not work, you would need to join against Table2...

UPDATE t
SET t.l2p = 0.207 * ISNULL(t2.DUM, 1)
FROM Table1 t INNER JOIN Table2 t2 
     ON t.[no] = t2.[no] 
WHERE t.[no] < 1389

You should really use a stored procedure, as below...

CREATE PROCEDURE [dbo].[sprocName] 
   @No INT
AS
BEGIN

    SET NOCOUNT ON;

    UPDATE t
    SET t.l2p = 0.207 * ISNULL(t2.DUM, 1)
    FROM Table1 t INNER JOIN Table2 t2 
         ON t.[no] = t2.[no] 
    WHERE t.[no] < @No
END

To run the stored procedure, use EXEC sprocName @No=1389

Christian Phillips
  • 18,399
  • 8
  • 53
  • 82
1

You should use JOIN:

UPDATE Table1
SET Table1.l2p = 0.207 * Table2.DUM
FROM Table1 JOIN Table2 ON Table1.[no] = Table2.[no] 
WHERE Table1.[no] < 1389
Yosi Dahari
  • 6,794
  • 5
  • 24
  • 44