2015-03-25 2 views
0

У меня есть главная таблица отель и его подпункты столы hotel_food, hotel_extras, hotel_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 
Смежные вопросы