gpt4 book ai didi

mysql - 引用外键连接两个表

转载 作者:行者123 更新时间:2023-11-30 22:48:24 25 4
gpt4 key购买 nike

当没有直接设置外键时,我在连接两个表时遇到了一些问题。

我有两个表:

表A

{A.ID}  {A.NAME}  {Parentid}   {A_FK} (foreign key)
A.ID1 A.NAME1 NULL A_FK1
A.ID2 A.NAME2 NULL A_FK2
A.ID3 A.NAME3 A.ID2 NULL
A.ID4 A.NAME4 NULL A.FK4
OtherA OtherId Other Other

表B

{B.ID}  {B.Code}    
A.FK1 some_text1
A.FK2 some_text2
A.FK4 some_text3
B.ID1 some_text4

在表 A 中,A.ID3 没有 FK,但它的 ParentID 指向具有 ForeingKey 的 A.ID2。

我希望:

{A.ID} {A.NAME} {B.Code}
A.ID1 A.NAME1 some_text1
A.ID2 A.NAME2 some_text2
A.ID3 A.NAME3 some_text2
A.ID4 A.NAME4 some_text3

任何人都可以帮助我加入吗?

最佳答案

如果你的父子关系可以是多层次的,那么你需要写一个这样的递归查询:

CREATE TABLE TableA(ID INT, Name VARCHAR(10), ParentID INT NULL, FK INT NULL );
CREATE TABLE TableB( ID INT, Code VARCHAR(50));
INSERT INTO TableA VALUES (1, 'Name1', NULL, 1);
INSERT INTO TableA VALUES (2, 'Name2', NULL, 2);
INSERT INTO TableA VALUES (3, 'Name3', 2, NULL);
INSERT INTO TableA VALUES (4, 'Name4', NULL, 4);
INSERT INTO TableA VALUES (5, 'Name4', 3, NULL);

INSERT INTO TableB VALUES (1, 'Some Text 1');
INSERT INTO TableB VALUES (2, 'Some Text 2');
INSERT INTO TableB VALUES (4, 'Some Text 3');

WITH X (ID, NAME, FK) AS (
SELECT ID, NAME, FK
FROM TABLEA
WHERE PARENTID IS NULL
UNION ALL
SELECT T.ID, T.NAME, X.FK
FROM TABLEA T
INNER JOIN X ON (T.PARENTID = X.ID)
)
SELECT X.ID, X.NAME , TABLEB.CODE
FROM X INNER JOIN TABLEB ON (X.FK = TABLEB.ID);

关于mysql - 引用外键连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com