简体   繁体   English

Sybase = *向mysql右外连接

[英]Sybase =* joing to mysql right outer join

I have the the following Sybase sql statement that contains a right outer join (i think) using the syntax =* . 我有以下Sybase sql语句,其中包含使用语法= *的右外部联接(我认为)。 I am trying to replicate this in mysql and failing horribly. 我试图在mysql中复制此文件,但失败极了。 Can anyone suggest how i state the right outer join in the from section. 谁能建议我在from部分中陈述正确的外部联接。

SELECT database1.inst.regionAbb,
       database1.inst.regionalCode,
       database1.inst.instCode,
       database1.inst.name,
       database1.inst.yCode,
       database1.blac.customerCode,
       database1.inst.transportCode,
       database1.inst.Agreement,
       database1.addr.telephone,
       database1.addr.fax,
       database1.addr.email,
       database1.addr.id contactaddr,
       database1.inst.nameAbb,
       database1.inst.messageType,
       database1.inst.closedFrom,
       database1.inst.closedTo,
       database1.inst.costScheme1,
       database1.inst.costScheme2,
       database1.inst.costScheme3,
       database1.inst.costScheme4,
       database1.inst.costScheme5,
       now() updated

FROM database1.Table1 inst,
     database1.Table2 addr,
     database1.Table3 blac

WHERE ((database1.addr.instCode = database1.inst.instCode) **
       AND ((database1.blac.instCode =* database1.inst.instCode)**
       AND (database1.blac.preferred = "Y")))
       AND ((database1.addr.id = database1.inst.Address
       AND database1.inst.lendingTable2 != 0)
       OR (database1.addr.id = database1.inst.mainTable2
       AND database1.inst.lendingTable2 = 0))

I'm not familiar with Sybase, but I think this is what you're going for: 我对Sybase不熟悉,但是我认为这是您想要的:

SELECT * FROM 
FROM database1.Table1 inst,
INNER JOIN database1.Table2 addr ON addr.instCode = inst.instCode
LEFT JOIN database1.Table3 blac ON blac.instCode = inst.instCode
WHERE blac.preferred = "Y"
  OR (blac.preferred IS NULL AND
       ((addr.id = inst.Address    AND inst.lendingTable2 != 0)
     OR (addr.id = inst.mainTable2 AND inst.lendingTable2 = 0)))

This assumes it only does the final check if there is no blac record - if you actually want to do that check if there is no blac record OR blac.preferred != 'Y' then you can remove the blac.preferred IS NULL AND as well as the extra pair of parenthesis. 这是假定它只做最后的检查,如果没有blac记录-如果你真的想这样做检查,如果没有blac记录或blac.preferred != 'Y' ,那么你可以删除blac.preferred IS NULL AND作为以及多余的一对括号。

SELECT * FROM((在inst.instCode = blac.instCode和blac.preferred =“ Y”上的(database1.Table1 inst左联接database1.Table3 blac)加入(addr.instCode = inst.instCode和(((addr .id = inst.lendingTable2和inst.lendingTable2 <> 0)或(((addr.id = inst.mainTable2)和(inst.lendingTable2 = 0))))));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM