使用单个查询获取多个 table 列的总和
Get sum of more than one table columns with a single query
我有一个主要的 table hotel 及其子 tables hotel_food, hotel_extras, hotel_room 参考 ID hotel,
现在我想获得每家酒店的每个 table(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']."'");
}
有什么方法可以通过单个查询获得所有 tables 价格的总和,例如 totalFoodPrice、totalRoomPrice、totalExtrasPrice
提前致谢
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
您可以像这样使用子查询:
$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.'");
我有一个主要的 table hotel 及其子 tables hotel_food, hotel_extras, hotel_room 参考 ID hotel,
现在我想获得每家酒店的每个 table(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']."'");
}
有什么方法可以通过单个查询获得所有 tables 价格的总和,例如 totalFoodPrice、totalRoomPrice、totalExtrasPrice
提前致谢
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
您可以像这样使用子查询:
$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.'");