2015-03-25 52 views
0

我有一个主表酒店及其子表hotel_foodhotel_extrashotel_room与指令Id 酒店获取多个表列的总和与一个单一的查询

现在我想要获得每个酒店的每个表格(hotel_food,hotel_extras,hotel_room)中的价格总和。

我现在用这样的

$result = $db->query("SELECT id FROM hotel WHERE id = '.$hotel.'"); 
if($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    $food_result = $db->query("SELECT sum(price) FROM hotel_food WHERE hotel_id = '".$row['id']."'"); 
    $room_result = $db->query("SELECT sum(price) FROM hotel_room WHERE hotel_id = '".$row['id']."'"); 
    $extras_result = $db->query("SELECT sum(price) FROM hotel_extras WHERE hotel_id = '".$row['id']."'"); 
} 

有没有什么办法让所有的表价格像totalFoodPrice,totalRoomPrice,totalExtrasPrice的总和与单个查询提前

感谢

回答

1

你可以使用这样的子查询:

$result = $db->query("SELECT id, 
    (SELECT sum(price) FROM hotel_food WHERE hotel_id = h.id) TotalFoodPrice, 
    (SELECT sum(price) FROM hotel_room WHERE hotel_id = h.id) TotalRoomPrice, 
    (SELECT sum(price) FROM hotel_extras WHERE hotel_id = h.id) TotalExtraPrice 
FROM hotel h WHERE id = '.$hotel.'"); 
1
SELECT * FROM 
(
SELECT sum(price) AS totalFoodPrice FROM hotel_food WHERE hotel_id = 1, 
SELECT sum(price) AS totalRoomPrice FROM hotel_room WHERE hotel_id = 1, 
SELECT sum(price) AS totalExtrasPrice FROM hotel_extras WHERE hotel_id = 1 
) temp 
相关问题