我有类似的表:
#1
OriginalID | Area
========== | ====
2 | Abdomen
3 | Abdomen
#2
Area | Part
==== | ====
Abdomen| Abdomen
Bottom | Bottom
#3
Part | OriginalID
==== | ==========
Abdomen| 2
Bottom | 3
期望的结果:
OriginalID | Area | Part
========== | ==== | ====
3 | Abdomen | NULL
一旦我弄明白,我可以将表更新为:
#3
Part | OriginalID
==== | ==========
Abdomen| 2
Bottom | 3
Abdomen| 3
因此,对于期望的结果,我想知道它最初被分配到50(表#1
),但表Area
中的特定#3
没有对应的关系。
现在,我想知道Area
中的#1
是否与ID
中的同一#3
无关。 #3
是ID
和Part
之间的多对多关系。 Area
现在已经被分成了自己的表格。但它一直保存在#1
中。不幸的是,它仍然被使用,现在我正在重构一些代码以确保#1
与Area
之间的关系未正确移植到#2
。
#2
是Area
和Part
之间的多对多关系。
有没有办法在Area
中使用SQL查找哪些#3
关系未被考虑?让计算机为我做这件事会很好,但我不能完全理解如何做到这一点。
提前致谢!
以下是一些测试数据
CREATE TABLE #1
(
OriginalID INT NOT NULL,
Area VARCHAR(50) NOT NULL
)
CREATE TABLE #2
(
Area VARCHAR(50) NOT NULL,
Part VARCHAR(50) NOT NULL
)
CREATE TABLE #3
(
Part VARCHAR(50) NOT NULL,
OriginalID INT NOT NULL
)
INSERT INTO #1 VALUES
(2, 'Abdomen'),
(3, 'Abdomen')
INSERT INTO #2 VALUES
('Abdomen', 'Abdomen'),
('Bottom', 'Bottom')
INSERT INTO #3 VALUES
('Abdomen', 2),
('Bottom', 3)
DROP TABLE #1
DROP TABLE #2
DROP TABLE #3
杰森的回答目前不正确
SELECT a.Area
FROM #1 AS a
WHERE NOT EXISTS (
SELECT *
FROM #2 as b
INNER JOIN #3 as c
ON b.Part = c.Part
WHERE a.Area = b.Area)
NULL
结果中的结果。
答案 0 :(得分:1)
SELECT a.Area
FROM table1 AS a
WHERE NOT EXISTS (SELECT *
FROM table2 as b
INNER JOIN table3 as c
ON table2.part = table3.part
WHERE a.Area = b.Area)
答案 1 :(得分:1)
下面将为您提供不在#3中的内容:
td img.off{
display:none;
}
td:hover img.off{
display:inline;
}
td:hover img.on{
display:none;
}
答案 2 :(得分:0)
根据您的解释,看看这是否有帮助。
Select table1.OriginalID, table1.Area, table3.Part
From table1
Left Join table3 on table1.OriginalID = table3.OriginalID
Where table3.OriginalID is null