2012-07-07 52 views
0

我無法將一個查詢的輸出用作另一個查詢中的值。事情是我需要使用下面的查詢來獲取一個產品(這是成功地完成)的價格:我需要使用另一個mySQL查詢的輸出(它的值)

SELECT Cena FROM Proizvod WHERE ProzivodID = $PID 

$ PID是一個PHP變量,此查詢工作得很好。當我想從買家的餘額中減去產品的價格時,問題就出現了。 我試圖做的是用下面的查詢:

UPDATE Kupuvac SET Saldo = Saldo - ".$cena." WHERE KupuvacID=$KID 

$以上的價格是一個PHP變量,它的值是第一個查詢。

第二個查詢完全不起作用,它不會返回錯誤消息,但它不會改變他買方的平衡。


如果有人需要它的簡短解釋:Cena - Price; Proizvod - Product; Kupuvac - Buyer; Saldo - Balance

在此先感謝!

+0

你如何檢查第二個查詢的錯誤,你可以檢查受影響的行的價值?你使用的是什麼mysql api(mysql_,mysqli,PDO)?謝謝 – drew010 2012-07-07 19:56:23

+0

我使用集成在xampp中的phpMyAdmin。 – 2012-07-08 01:17:15

回答

2

你可以做你UPDATE操作在一個聲明:

UPDATE Kupuvac a 
CROSS JOIN 
(
    SELECT Cena FROM Proizvod WHERE ProzivodID = $PID 
) b 
SET a.Saldo = a.Saldo - b.Cena 
WHERE a.KupuvacID = $KID 
+0

它返回錯誤:#1054 - 'where子句'中的未知列'ProizvodID' – 2012-07-07 20:03:59

+0

@AndrewAlbertPetrovsky,固定。我原以爲這只是一個錯字。 – 2012-07-07 20:04:53

+0

這工作也很好,謝謝你的努力:) – 2012-07-08 01:18:58

2

你就不能將其組合到一個查詢?

UPDATE Kupuvac 
SET Saldo = Saldo - (SELECT Cena FROM Proizvod WHERE ProzivodID = $PID) 
WHERE KupuvacID = $KID 
+0

它很好用! – 2012-07-07 20:11:12

+0

注意,如果沒有行(產品)匹配'ProzivodID = $ PID'條件,那麼'Saldo'將被設置爲'NULL',如果我沒有錯的話。 – 2012-07-07 20:21:01

+0

你是對的,但在這種情況下,產品是從下拉菜單中選擇的,所以總會有一行加密ID。無論如何,這是一個好的評論,它會在項目的進一步發展中派上用場。謝謝。 – 2012-07-08 01:13:47

相關問題