1

ビュー結合が追加の2つのテーブルに接続されている2つのテーブル全体で更新を実行しようとしています。

構文エラーは発生しませんが、影響を受ける行はゼロなので、ロジックがどのように記述されるのか疑問に思っています..これは私が試したことです:

UPDATE resources R
    INNER JOIN cost C
    ON R.rid=R.rid          

    INNER JOIN users U
    ON R.uid=U.uid

    INNER JOIN money M
    ON M.bid=C.bid

   SET R.q = R.q - C.q, M.q = M.q - 1
   WHERE C.bid=? AND U.uid= ?

クエリのこの部分を削除するM.q = M.q - 1と、その結合はM正常に機能しますが、追加すると、すべての行が更新されません。

クエリは、テーブルフィールドからAND removeresourcesに基づいて数量合計を削除することをサポートしています。cost quantity1moneyq

この =/ を修正するにはどうすればよいですか?

4

1 に答える 1

2

クエリの JOIN 条件に問題があります。あなたが持っているバットからすぐに、R.rid=R.ridそれは正しくありません。

さて、あなたのサンプルデータIMHOから推測すると、クエリは次のようになります

UPDATE resources R JOIN costs C
    ON R.uid = C.rid JOIN users U
    ON R.uid = U.uid JOIN money M
    ON M.uid = C.rid
   SET R.q = R.q - C.q, M.q = M.q - 1
 WHERE C.bid = 3 
   AND U.uid = 1

これがSQLFiddleのデモです

于 2013-07-25T06:55:14.270 に答える