很難解釋的一種,所以我會將其映射出來。鑑於這四個表:houses
,landlord_houses
,company
和tenant
,我需要找到所有在過去14天內註冊的房屋,並獲得關於它們的一些信息。加入3張表格並根據這些表格的內容檢索字段
以前我用houses
表的一個非常簡單的select
查詢完成了這個。但現在我需要讓房子的出租代理人在報告上顯示。問題是,出租代理可以位於以下三個位置中的任何一個:company
表,houses
表或tenant
表中。我想出了這個查詢至今:
select distinct h.id as id,
h.address1 as address1,
h.town as town,
h.postcode as postcode,
h.valid_from as valid_from,
h.valid_to as valid_to,
(CASE WHEN c.name IS NOT NULL THEN c.name || ' (MS)'
WHEN h.letting_agent IS NOT NULL THEN h.letting_agent
WHEN t.id IS NOT NULL THEN t.letting_agent
ELSE 'Unknown (Not set yet)' END) AS agent
from houses h
left join landlord_houses lh on lh.house_id = h.id
left join company c on c.id = lh.company_id
left join tenant t on t.house_id = h.id
where h.deleted IS FALSE
and h.archived IS FALSE
and h.sign_up_complete IS TRUE
and h.completed > NOW() - '14 days'::INTERVAL
order by h.id
這類作品,但我得到的結果回有,即使它的意思是說,一個空agent
場「未知(尚未設定)」 。即使我使用了distinct h.id
,我也會收到重複的房屋。我認爲這是因爲在公司,房屋和租戶桌上有多個出租代理人。
查詢中需要更改哪些內容才能使其工作?
謝謝。
不同只是使得每個元組(行)都是唯一的,而不是元組中的每個單獨的值。我從來沒有嘗試psql,但也許語言支持coalesce()函數?它返回第一個非null值。例如coalesce(c.name,h.letting_Agent,t.letting_agent,'Unknown(Not set yet)') –