2017-04-26 94 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 
相关问题