1

次の 3 つのテーブル

mysql> select * from food;
+--------+------+-------+
| foodid | name | price |
+--------+------+-------+
|      1 | 雞   |   100 |
|      2 | 鴨   |   200 |
|      3 | 魚   |   300 |
|      4 | 肉   |   400 |
+--------+------+-------+
4 rows in set

mysql> select * from drink;
+---------+------+-------+
| drinkid | name | price |
+---------+------+-------+
|       1 | 紅茶 |    50 |
|       2 | 綠茶 |   100 |
|       3 | 奶茶 |   150 |
+---------+------+-------+
3 rows in set

mysql> select * from order_table;
+----+-----------+--------+---------+------------+-------------+-------------+
| id | user_name | foodid | drinkid | food_count | drink_count | total_price |
+----+-----------+--------+---------+------------+-------------+-------------+
|  2 | 小明      |      3 |       2 |          2 |           2 |           0 |
|  3 | 小華      |      1 |       1 |          1 |           8 |           0 |
|  4 | 小英      |      1 |       3 |          3 |           3 |           0 |
|  6 | 小a       |      2 |       1 |          4 |           6 |           0 |
|  7 | 小b       |      2 |       2 |          5 |           4 |           0 |
|  8 | 小c       |      2 |       3 |          6 |          10 |           0 |
|  9 | 大A       |      3 |       1 |          9 |           8 |           0 |
| 10 | 大B       |      3 |       2 |          5 |           4 |           0 |
| 11 | 大C       |      3 |       3 |         10 |           3 |           0 |
+----+-----------+--------+---------+------------+-------------+-------------+

order_table の foodid は food テーブルの
foodid へのリンクです

今、合計金額を計算したいのですが、

Total_price = 
    order_table.foodid(food.price in food table) * order_table.food_count +
    order_table.drinkid(drink.price in drink table) * order_table.drink_count;

それで、合計価格を更新するコマンドを教えてください

ありがとう。

4

2 に答える 2

2

LEFT JOIN次のクエリで使用した理由は、一部の注文にはdrinksまたはのみが含まれている可能性があると想定したためfoodsです。

UPDATE  order_table a
        LEFT JOIN food b
            ON a.foodid = b.foodID
        LEFT JOIN drink c
            ON a.drinkID = c.drinkID
SET     a.total_price = (a.food_count * COALESCE(b.price, 0) +
                        a.drink_count * COALESCE(c.price, 0))

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

于 2013-03-04T03:02:44.433 に答える
0

このようなものは近いはずです:

SELECT COALESCE(F.Price,0)*OT.Food_Count+COALESCE(D.Price,0)*OT.Drink_Count Total_price 
FROM Order_Table OT
    LEFT JOIN Food F ON OT.FoodId = F.FoodId
    LEFT JOIN Drink D ON OT.DrinkId = D.DrinkId

実際にその列を更新するには:

UPDATE Order_Table OT
    LEFT JOIN Food F ON OT.FoodId = F.FoodId
    LEFT JOIN Drink D ON OT.DrinkId = D.DrinkId
SET OT.Total_Price =  COALESCE(F.Price,0)*OT.Food_Count+COALESCE(D.Price,0)*OT.Drink_Count
于 2013-03-04T03:01:15.047 に答える