我的数据库里有两张桌子。第一个表包含多条路线和巡逻。每条路线都可能有多次巡逻。每次巡逻时,都会提交一些标签。第二个表只包含路由和标记,基本上是为该路由设置的完整标记。
对于每次巡逻,我都需要返回第二个表中不存在的值(也就是列出该路线和巡逻中没有记录的标记)。
**Table:Data Import:**
RouteID
PatrolID
TagID
**Table:Routes**
RouteID
TagID这有道理吗?我试过不进入,离开加入,不存在,但我似乎无法使我的逻辑正确。我最近的尝试(全部)如下:
哦,我正在创造一个风景。我希望将下面的颜色包含在我的输出中,但是您不需要在响应中使用它们。
CREATE VIEW TagsNotPresent AS
SELECT
[Data Import].[Company name],
[Data Import].[Site name],
[Data Import].[Patrol ID],
[Data Import].[Route id],
[Data Import].[Occurrence date],
[Data Import].[Tag name]
FROM [Data Import]
LEFT OUTER JOIN Routes
ON Routes.[Route id] = [Data Import].[Route id]
AND Routes.[Tag name] = [Data Import].[Tag name]
WHERE Routes.[Tag name] IS NULL任何帮助都将不胜感激。
发布于 2014-07-03 12:00:20
EXCEPT可以帮助您:
SELECT r.RouteId,di.PatrolID,r.TagId
FROM Routes r
INNER JOIN (SELECT DISTINCT RouteId, PatrolID from DataImport) as di on di.RouteId = r.RouteId
EXCEPT
SELECT RouteId,PatrolID,TagId
FROM DataImport发布于 2014-07-03 11:34:18
用减号SQL顺序试一试。我选择了所有可能的路由和标签组合,并减去所有现有的。我希望这是你想要的。
select distinct patrol_id, routes.*
from data_import
join routes
on data_import.route_id = routes.route_id
minus
select patrol_id, routes.*
from data_import
join routes
on data_import.route_id = routes.route_id and data_import.tag_id = routes.tag_id;https://stackoverflow.com/questions/24551770
复制相似问题