0
我需要一个查询连接两个表的宿舍(宿舍)数据库帮助:加入两个表组
房间 - 房间ID,类别,租金,没有床,等
旅馆主人 - 旅馆主人身份证,姓名,房间号等
我需要生成一个结果集给所有的房间,总床数没有和占用没有。床和床的免费无等
这里是我使用的查询:
SELECT r.R_ID , r.R_Beds, count(h.h_id), (r.r_beds-count(h.h_id)) ,
if((r.r_beds-count(h.h_id))>0, 'Available', 'Full') , r.r_rent
FROM T_Rooms r LEFT OUTER JOIN t_hostelers h
ON r.r_id = h.h_roomno
WHERE h.h_status= 'active'
GROUP BY h.h_roomno
但我只得到从房间表,该表在hostelers表中的值的行。我需要显示其他没有占用的房间。
请帮我找出我的疏忽或错误。
实际上,由于WHERE子句,行没有被消除。这是因为T_Rooms表中所有行的T_Hosteler表中不会有(或不需要)行。 – gvm123 2011-12-19 21:54:36
那么你能否提供一些样本数据和预期结果,因为我不明白这个问题。 – xQbert 2011-12-19 22:12:55
我必须不同意你的评论:假设我在T_Hosteler中有没有记录的T_ROOM 1。当这是左连接时,1仍然在结果集中。但是,当DBEngine应用where子句时,记录1将被删除,因为T_Hostler.H_status等于NULL而不是'active',因此t_Hostlers中没有记录的任何房间将被排除(由where子句排除)。这否定了左连接的好处。 – xQbert 2011-12-20 12:11:50