2015-11-06 124 views
1

我有以下查詢:去哪裏放哪裏?

select 
sites.denomination, 
rooms.floor, 
rooms.number, 
(count(beds.id) - sum(if(beds.state<0,1,0))) as active 
from rooms 
join sites on rooms.site_id = sites.id 
join beds on rooms.id = beds.room_id group by beds.room_id 
order by 
    sites.denomination, 
    rooms.floor 

它工作得非常好,但我想補充的現場(場sites.id)中進行選擇。我總是得到錯誤:「您的SQL語法有錯誤;請檢查手冊...」

謝謝!

+0

http://dev.mysql.com/doc/refman/5.7/en/select.html – axiac

+0

SELECT ... FROM ... [JOIN ... ON ...] [WHERE ... ] ... [GROUP BY ... [HAVING ...]] [ORDER BY ... [LIMIT]] – Strawberry

回答

0
select 
sites.denomination, 
rooms.floor, 
rooms.number, 
(count(beds.id) - sum(if(beds.state<0,1,0))) as active 
from rooms 
join sites on rooms.site_id = sites.id 
join beds on rooms.id = beds.room_id 
where sites.id = ... 
group by beds.room_id 
order by 
    sites.denomination, 
    rooms.floor 
+0

需要去哪裏BEFORE羣組通過 – PaulF

+0

哎呀你是對的,沒有看到那一個 – AgeDeO

0

它是這樣的」

select... 
from...joins 
where.... 
group by.. 
having..... 
order by... 
limit.... 

參考MYSQL Docs更多細節

所以你的情況這將是這樣的:。

select 
sites.denomination, 
rooms.floor, 
rooms.number, 
(count(beds.id) - sum(if(beds.state<0,1,0))) as active 
from rooms 
join sites on rooms.site_id = sites.id 
join beds on rooms.id = beds.room_id 
where ...........//Add your where condition here 
group by beds.room_id 
order by 
    sites.denomination, 
    rooms.floor 
+0

應該添加'having',因爲在SQL – DarkBee

+0

中有一個計算的字段我錯過了連接 - 他在查詢中使用它們,所以添加它們很有意義 – AgeDeO

+0

@DarkBee,AgeDeo:添加,謝謝:) –

1
SELECT 
sites.denomination, 
rooms.floor, 
rooms.number, 
(COUNT(beds.id) - SUM(if(beds.state<0,1,0))) AS active 
FROM rooms 
JOIN sites ON rooms.site_id = sites.id 
JOIN beds ON rooms.id = beds.room_id 
//your WHERE should be here 
GROUP BY beds.room_id 
ORDER BY 
    sites.denomination, 
    rooms.floor 
0

試試這個:

select 
sites.denomination, 
rooms.floor, 
rooms.number, 
(count(beds.id) - sum(if(beds.state<0,1,0))) as active 
from rooms 
inner join sites on rooms.site_id = sites.id 
inner join beds on rooms.id = beds.room_id 
where **instruction** 
group by beds.room_id 
order by 
sites.denomination, 
rooms.floor 
+0

哪裏需要去之前組 – PaulF