Sql server 难以理解多对多递归的
在过去的几个小时里,我一直在想如何输出每个父亲、母亲和他们所有的孩子 我知道如何单独显示一个组,如下所示Sql server 难以理解多对多递归的,sql-server,sql-server-2012,many-to-many,recursive-query,Sql Server,Sql Server 2012,Many To Many,Recursive Query,在过去的几个小时里,我一直在想如何输出每个父亲、母亲和他们所有的孩子 我知道如何单独显示一个组,如下所示 CREATE TABLE PERSON ( persID INT IDENTITY(1,1) PRIMARY KEY, persFName VARCHAR(30) NOT NULL, persLName VARCHAR(30) NOT NULL, persDOB DATE, motherID INT FOREIGN
CREATE TABLE PERSON
(
persID INT IDENTITY(1,1) PRIMARY KEY,
persFName VARCHAR(30) NOT NULL,
persLName VARCHAR(30) NOT NULL,
persDOB DATE,
motherID INT FOREIGN KEY REFERENCES person(persID),
fatherID INT FOREIGN KEY REFERENCES person(persID),
persDOD DATE,
persGender CHAR(1),
)
CREATE TABLE COUPLE
(
coupleID INT IDENTITY(1,1) PRIMARY KEY,
alphaSpouse INT NOT NULL FOREIGN KEY REFERENCES person(persID),
omegaSpouse INT NOT NULL FOREIGN KEY REFERENCES person(persID),
coupleStart DATE NOT NULL,
coupleEnd DATE,
)
但我一辈子都不知道如何将它们显示在一起(同时相互关联)。我使用交叉连接吗?全联盟 这只是一个连接,多次。它与
couple
表无关:
SELECT *
FROM person
WHERE persID IN (select fatherID from person
WHERE fatherID IS NOT NULL)
哇,真漂亮。非常感谢。我想我仍然无法理解如何正确使用连接。很难在网上找到好的sql server资源,
select (f.persFname + ' ' + f.persLname) as father,
(m.persFName + ' ' + m.persLname) as mother,
(c.persFName + ' ' + c.persLname) as child
from person c join
person m -- mother
on c.motherid = m.persid join
person f -- father
on c.fatherid = f.persid;