我有表避免在查询
M,R,G,d,PT和PI
PI具有与所有其他表的关系。 有一个父 - M,R,G和D的子关系
实施例:型号ID将在那里在M和R 范围ID将在那里在R和G 级ID将在那里在G中和d
要知道其被发布的衍生物,示例是如下
SELECT D.DERIVATIVE_ID
FROM PRD.DERIVATIVE D
JOIN PUB.PUBLISHED_ITEM PI ON PI.PUBLISHED_OBJECT_ID = D.DERIVATIVE_ID
AND PI.PUBLISHED_OBJECT_TYPE = 'DERIVATIVE'
JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID = PT.PUBLISHED_TARGET_ID
WHERE D.DERIVATIVE_ID = 683239
要知道其被发布的模型,一个例子是如下面
SELECT *
FROM PRD.MODEL M
JOIN PUB.PUBLISHED_ITEM PI ON PI.PUBLISHED_OBJECT_ID = M.MODEL_ID
AND PI.PUBLISHED_OBJECT_TYPE = 'MODEL'
JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID = PT.PUBLISHED_TARGET_ID
WHERE M.model_id = 257
我想编写一个查询,显示模式,其衍生物公布,但不是模型(模型没有公布)
这里是我试过了,您的意见将是有益的
SELECT *
FROM PRD.MODEL M
JOIN PUB.PUBLISHED_ITEM PI ON PI.PUBLISHED_OBJECT_ID = M.MODEL_ID
AND PI.PUBLISHED_OBJECT_TYPE = 'MODEL'
JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID <> PT.PUBLISHED_TARGET_ID
JOIN PRD.RANGE R ON R.MODEL_ID = M.MODEL_ID
JOIN PRD.GRADE G ON G.RANGE_ID = R.RANGE_ID
JOIN prd.DERIVATIVE D ON D.GRADE_ID = G.GRADE_ID
AND D.DERIVATIVE_ID IN (
SELECT D.DERIVATIVE_ID
FROM PRD.DERIVATIVE D
JOIN PUB.PUBLISHED_ITEM PI ON PI.PUBLISHED_OBJECT_ID = D.DERIVATIVE_ID
AND PI.PUBLISHED_OBJECT_TYPE = 'DERIVATIVE'
JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID = PT.PUBLISHED_TARGET_ID)
同样在上面的查询中,我该如何避免使用“IN”?
THX重新格式化,你用什么工具? – Beth 2014-11-20 17:25:33
我使用SQL提示 - 非常值得花钱! – 2014-11-20 17:30:09