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