2015-11-07 96 views
0

需要帮助我有一个问题SQL语句,它可以检索连锁酒店中的“房间总成本”最大值。并使用子查询来确定由酒店分组的总房间费用..我可以做2个查询,但我不断收到错误把它们放在一起。我的两张桌子。酒店 - 与表hotel_no和hotelname。房间 - 带桌子room_no,hotel_no,room_type,room_price子查询和SUM

到目前为止,我已经

SELECT hotelname, SUM(room_price) as Total 
FROM hotel, room 
WHERE hotel.hotel_no = room.hotel_no 
GROUP BY Hotelname 

给我酒店的名字和每个酒店价格

SELECT SUM(room_price) AS Total 
FROM room 

让我总

每当我尝试将它们放在一起我得到一个错误 如

SELECT hotel_no, SUM(room_price) AS "Total" 
FROM room 
WHERE hotel_no= hotel_no 
UNION ALL 
SELECT hotel_no, hotelname 
FROM hotel 
WHERE hotelname = hotelname 
group by hotelname; 

请帮助THX


Sry基因是一个痛苦,但显然它得到正确的答案,但我错了,它必须是一个子查询中从 质疑这个酒店,在链中的每个酒店于各种费用众多的客房,酒店想知道哪个饭店具有最高的房费总

样品

SELECT MAX(SubFromName.NewColumnName) 
FROM (SELECT columnName, SUM(columnName) AS ‘NewColumnName’ 
FROM table 
GROUP BY columnName) SubFromName; 

希望此链接的作品,这是架构数据http://www.sqlfiddle.com/#!9/48429

最近我已经是低于但仍然没有正确的

select hotelname, MAX(room_price), SUM(room_price) AS 'Total Room Cost' 
from room,hotel 
WHERE hotelname IN (SELECT hotelname FROM hotel 
WHERE hotel.hotel_no = room.hotel_no) 
group by hotelname; 

不能有加入或工会应该是这样的样品如果有人得到什么我意味着提前预感。我的脑死了一周。

+0

提供一些示例数据和预期产出。 – Wanderer

回答

0

只是回答我自己这是我结束了它的工作

SELECT hotelname, 
(SELECT SUM(room_price) from room where hotel_no = hotel.hotel_no) as TotalRoomCost 
from hotel 
GROUP BY hotelname 

是换货是这个

SELECT MAX(Eagle.TotalRoomCost) 
FROM (SELECT hotel_no, SUM(room_price) AS 'TotalRoomCost' FROM room GROUP BY hotel_no) Eagle; 
0

试试这个:

SELECT hotel_no, SUM(room_price) AS Total, "" as hotelname 
FROM room 
WHERE hotel_no= hotel_no 
UNION ALL 
SELECT hotel_no, "" AS Total, hotelname as hotelname 
FROM hotel 
WHERE hotelname = hotelname 
group by hotelname; 

UNION ALL应该有两个查询相同的列数。

+0

@Strawberry哦是啊..我在查询下面编辑了我的句子,还可以更改字段的名称。 –

0
Select chain_name, sum(price) 
From chain a 
Inner join 
(Select a.hotel_no, sum(room_price) as price,   b.chainid 
From room a 
Inner join hotel b 
On a.hotel_no = b.hotel_no 
Group by a.hotel_no) b 
On a.Id =b.chainid 

集团通过chain_name

+0

手机抱歉格式 – MIKE