一对多的关系与此架构:优化一个在同一个表查询
CREATE TABLE LookUp
([docID] varchar(10), [docType] varchar(100), [PartNumber] varchar(100), [internalID] varchar(100));
INSERT INTO LookUp
([docID],[docType],[PartNumber], [internalID])
VALUES
('D0305415', 'docTypeSub', 'X0455', null),
('D0157632', 'docTypeMain', null, 'XY05570-XY05571'),
('D0181511', 'docTypeMain',null, 'XY05572-XY05573'),
('D0157633', 'docTypeMain',null, 'XY06380-XY06381'),
('D0156037', 'docTypeSub', 'X0326', null),
('D0151874', 'docTypeMain', null, 'XY05345');
CREATE TABLE Links
([docIDTop] varchar(10), [docIDBottom] varchar(10));
INSERT INTO Links
([docIDTop],[docIDBottom])
VALUES
('D0157632', 'D0305415'),
('D0181511', 'D0305415'),
('D0157633', 'D0305415'),
('D0151874', 'D0156037');
有没有办法不使用优化这个查询嵌套的“选择”,我觉得有一种方法,但我不能记住; P。查找表在内部有一对多的关系,当doctype是'doctypeSub'时,有主行,在链接表中用来与查找表(再次)和他们的详细信息相关联。
SELECT * FROM
(SELECT INTERNALID,
(SELECT PARTNUMBER
FROM LOOKUP X2
WHERE X2.DOCID = Z.DOCIDBOTTOM) PARTNUMBER
FROM LOOKUP X
INNER JOIN LINKS Z
ON X.DOCID = Z.DOCIDTOP) TB
你能描述一下你想要查询吗? –