如何从mysql的外部联接表(两个以上的表)中获取值

问题描述 投票:0回答:2

我正在尝试从外部联接表中获取值,但是没有用。需要您的帮助。

1)假定如下所示的Tbl_report

   RID    |  CAT_ID  |  EXT_CODE
---------------------------------- 
    1     |    C01   |   HW06  
    2     |    C02   |   SW04 
    3     |    C03   |   IT04 
    4     |    C04   |   HW04 
    5     |    C05   |   SW02  

WHERE EXT_CODE @上面的Tbl_report是从多个表中引用(Tbl_SW的列SCODE,Tbl_HW的列HCODE或Tbl_IT的列[[ICODE))然后,显示引用表的content(这是来自Tbl_SW的SNAME列,来自Tbl_HW的HNAME或来自Tbl_IT的INAME的内容)

2)Tbl_SW

SID | SCODE | SNAME ----------------------------------- 1 | SW02 | SEC 2 2 | SW04 | SEC 4 3 | SW06 | SEC 6

3)Tbl_HW

HID | HCODE | HNAME ----------------------------------- 1 | HW02 | HOC 2 2 | HW04 | HOC 4 3 | HW06 | HOC 6

4)Tbl_IT

IID | ICODE | INAME ----------------------------------- 1 | IT02 | ITC 2 2 | IT04 | ITC 4 3 | IT06 | ITC 6

预期结果如下:

RID | CAT_ID | EXT_CODE ---------------------------------- 1 | C01 | HW06 - [HOC 6] 2 | C02 | SW04 - [SEC 4] 3 | C03 | IT04 - [ITC 4] 4 | C04 | HW04 - [HOC 4] 5 | C05 | SW02 - [SEC 2]

mysql subquery outer-join correlated-subquery
2个回答
0
投票
SELECT Tbl_report.RID, Tbl_report.CAT_ID, Tbl_report.EXT_CODE, Tbl_SW.SID, Tbl_SW.SNAME , Tbl_HW.HID ,Tbl_HW.HNAME, Tbl_IT.IID, Tbl_IT.INAME FROM (((Tbl_report INNER JOIN Tbl_SW ON Tbl_Report.EXT_CODE=Tbl_SW.SCODE) INNER JOIN Tbl_Hw ON Tbl_Report.EXT_CODE = Tbl_HW.HCODE) INNER JOIN Tbl_IT ON Tbl_Report.EXT_CODE=Tbl_IT.ICODE);

0
投票
使用此选择语句

SELECT `[RID]`, `[CAT_ID]`, CONCAT(`[EXT_CODE]`, ' - ', `[SNAME]` ) result FROM Tbl_report tr LEFT join (SELECT * FROM Tbl_SW UNION SELECT * FROM Tbl_HW UNION SELECT * FROM Tbl_IT) ts ON tr.`[EXT_CODE]` = ts.`[SCODE]`

您得到此结果

RID CAT_ID result 1 C01 HW06 - HOC 6 2 C02 SW04 - SEC 4 3 C03 IT04 - ITC 4 4 C04 HW04 - HOC 4 5 C05 SW02 - SEC 2

DBfiddle示例https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f78a88f019df887666ac059d39ba1f48

这项工作是因为您要连接的表具有相同的结构。

我加入那里的左联接,因为在您的第一个示例中,它具有it03

© www.soinside.com 2019 - 2024. All rights reserved.