2015-11-07 108 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