2013-10-17 68 views
1

说我有两个表,patientsrooms,并且patients计算上选择一列

CREATE TABLE patient (
    id int, 
    room int, 
    FOREIGN KEY (room) REFERENCES room (id) 
); 

room

CREATE TABLE rooms (
    id int, 
); 

我想创建的rooms视图包括该房间有多少患者。 我可以

select count(1) from patients where room = N; 

计算在房间里的患者人数为任何现有客房N。 我将如何编写我需要的SELECT声明?


我最好的一个解决方案,射击:

select *, 
     count(1) as patients_in_room 
       from patients 
       where patients.room = rooms.id 
     from rooms; 

回答

3

这将使所有的房间,用patientsCount = 0当他们是空的。

SELECT r.id roomId, coalesce(count(p.room),0) patientsCount 
FROM room r left join patients p on r.id = p.room 
GROUP BY r.id 
1
SELECT room, COUNT(*) patients_in_room 
FROM patient 
GROUP BY room 
1

您可以使用MySQL聚合函数,请参阅documentation

对于你问上面你可以用下面的查询:

SELECT room, COUNT(*) FROM patient GROUP BY room 

干杯!