查询时如何防止生成INNER JOIN?

2020-09-28 09:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我面临以下问题:在P...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我面临以下问题:在PostGreSQL DB的UDT中,我正在两个表(例如A.column1 = B.column1)之间创建经典的等联接,当我使用LaunchPad查询时,它将转换联接 在"内部联接"中。

如何避免这种转变?

感谢您的帮助。

4条回答
追夢秋陽
2020-09-28 10:16

你好,

首先,谢谢您的回答。

我不确定我的问题是由PostGreSQL的行为引起的onyl,让我尝试用一​​个具体的例子来解释它。

对于这种情况,我正在使用您所说的OUTER JOIN,以便为两个表检索最大数量的值。 LaunchPad生成的请求返回以下语句(我尽力简化了):

选择*
FROM
rh.eqrem右外连接(
(选择
SO.w_agent_bo。*
FROM SO.w_agent_bo 在哪里
SO.w_agent_bo。 cod_coll in('17001')
和(CASE当'*'='@'THEN时SO.w_agent_bo.dt_deb_doss
当'*'='*'THEN date_trunc('day',current_date)
ELSE to_date('*','DD/MM/YYYY')END)> = SO.w_agent_bo.dt_deb_doss
并且(如果'*'='@'然后,则为例SO.w_agent_bo.dt_fin_doss-间隔" 1天"
当'*'='*'THEN date_trunc('day',current_date)
ELSE to_date('*','DD/MM/YYYY')END) )W_AGENT_BO ON(W_AGENT_BO.cod_clasremun = rh.eqrem.cod_clasremun
和W_AGENT_BO.cod_eqremun = rh.eqrem.cod_eqremun
和W_AGENT_BO.cod_typremun = rh_eq(' '@'THEN W_AGENT_BO.dt_deb_doss
当'*'='*'THEN date_trunc('day',current_date)
ELSE to_date('*','DD/MM/YYYY')END)和(CASE当'*'='@'THEN W_AGENT_BO.dt_fin_doss-间隔'1天'
当'*'='*'THEN date_trunc('day',current_date )
ELSE to_date('*','DD/MM/YYYY')END)> = rh.eqrem.dat_debut AND(condition1)AND(condition2)

,我想发表以下声明:

选择*
FROM
rh.eqrem右外连接(
(选择
SO.w_agent_bo。*
FROM SO.w_agent_bo 在哪里
SO.w_agent_bo。 cod_coll in('17001')
和(CASE当'*'='@'THEN时SO.w_agent_bo.dt_deb_doss
当'*'='*'THEN date_trunc('day',current_date)
ELSE to_date('*','DD/MM/YYYY')END)> = SO.w_agent_bo.dt_deb_doss
并且(如果'*'='@'然后,则为例SO.w_agent_bo.dt_fin_doss-间隔" 1天"
当'*'='*'THEN date_trunc('day',current_date)
ELSE to_date('*','DD/MM/YYYY')END) )W_AGENT_BO ON(W_AGENT_BO.cod_clasremun = rh.eqrem.cod_clasremun
和W_AGENT_BO.cod_eqremun = rh.eqrem.cod_eqremun
和W_AGENT_BO.cod_typremun = rh_eq(' '@'THEN W_AGENT_BO.dt_deb_doss
当'*'='*'THEN date_trunc('day',current_date)
ELSE to_date('*','DD/MM/YYYY')END)和(CASE当'*'='@'THEN W_AGENT_BO.dt_fin_doss-间隔'1天'
当'*'='*'THEN date_trunc('day',current_date )
ELSE to_date('*','DD/MM/YYYY')END)> = rh.eqrem.dat_debut)在(condition1)AND(condition2)

主要更改是在请求结束时,我不希望将" WHERE"条件包含在RIGHT OUTER JOIN内,因为这会修改我的condition1和condition2的行为。

这就是为什么我想使用" ="而不是INNER JOINS或OUTER JOINS保持初始等式联接的原因。或者您是否有任何想法像前面的示例所示"拆分" WHERE?

非常感谢您的参与。


R。

一周热门 更多>