2015-11-06 185 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