2017-04-26 51 views
0

我可以根據PostgreSQL中的case語句加入表格嗎?我已經在存儲過程中寫入了一個SQL,我在那個基礎上傳遞了一個標誌,我想要表格。請參閱案例聲明,我可以根據PostgreSQL中的case語句加入表格

JOIN lease_intervals li_active 
    ON (li_active.cid = l.cid AND l.id = li_active.lease_id AND 
     l.active_lease_interval_id = li_active.id) 
LEFT JOIN applications a 
    ON (a.cid = li.cid AND li.lease_id = a.lease_id AND 
     a.lease_interval_id = li.id) 
**CASE 
      WHEN pIsFromUI = TRUE 
         THEN JOIN property_integration_databases pid ON (pid.cid = l.cid AND pid.property_id == l.property_id) 
       JOIN integration_databases id ON (id.id = pid.integration_database_id AND id.cid = pid.cid) 
     ELSE 
      1 
END** 

請讓我知道是否有任何以上替代解決方案。

+0

您可以顯示完整的查詢,在particualar如果從可選的兩個表在年底選擇您的加入(您想在所有的在一定條件下不能加入這顯然)? –

+0

是的,我想加入表,如果這個標誌pIsFromUI如果是true和SQL存儲過程中。事實上,我有一個解決方案來建立字符串查詢然後執行它。 –

+0

你也可以把'pIsFromUI'作爲ON條件的一部分,然後如果'ON pIsFromUI = FALSE AND [其他條件]',它永遠不會搜索這個表。之後,放在'WHERE不pIsFromUI或pid.cid不爲空'。 –

回答

0
join 
lease_intervals li_active on 
    li_active.cid = l.cid and l.id = li_active.lease_id and 
    l.active_lease_interval_id = li_active.id 
left join 
applications a on 
    a.cid = li.cid and li.lease_id = a.lease_id and 
    a.lease_interval_id = li.id 
left join 
property_integration_databases pid on 
    pid.cid = l.cid and pid.property_id = l.property_id and pisfromui 
left join 
integration_databases id on 
    id.id = pid.integration_database_id and id.cid = pid.cid and pisfromui