2013-03-04 10 views
1

Три таблицы, как следоватьОбновление данных в нескольких таблице

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 | 
+----+-----------+--------+---------+------------+-------------+-------------+ 

foodid в order_table Ссылка на foodid в таблице продуктов питания,
drinkid в order_table Ссылка на drinkid в напиток таблице,

Теперь я необходимо рассчитать общую цену,

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; 

Итак, позвольте мне Knowlege команду обновить общую цену

thx много.

+0

Вы хотите знать, как получить данные, необходимые для расчета общего количества pr лед или как обновить каждую запись с правильной общей ценой? –

+0

как обновить каждую запись с правильной общей ценой – user1753112

ответ

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 
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)) 

Для дальнейшего получить больше знаний о присоединяется, любезно перейдите по ссылке ниже:

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