暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 左连接四个表,没有右表或笛卡尔产品的重复!

ASKTOM 2019-12-01
378

问题描述

我正在运行下面的查询以从4个表中获取数据,但是数据作为笛卡尔乘积获取的问题,换句话说,来自tblEdu的项目与来自tblTrain的项目重复


SELECT tblpersonal.*, tbltrain.*, tbledu.*, tblrequests.intReqId
FROM tblpersonal
LEFT JOIN tblrequests ON tblpersonal.intCompNo = tblrequests.intCompNo
AND tblrequests.intReqId = (SELECT MAX(req.intReqId) FROM tblrequests AS req WHERE req.intCompNo = tblpersonal.intCompNo)
LEFT JOIN tbltrain ON tblpersonal.intCompNo = tbltrain.intCompNo
LEFT JOIN tbledu ON tblpersonal.intCompNo = tbledu.intCompNo
WHERE tblrequests.intReqId IS NOT NULL
AND tblpersonal.intCompNo = 12368
GROUP BY tblpersonal.intCompNo, tbltrain.intTrainId, tbledu.intEduId
ORDER BY tblpersonal.intCompNo, tbledu.intEduId, tbltrain.intTrainid;




专家解答

没有示例数据很难说问题是什么。

但是你只是在incompno上加入tbltrain和tbledu。映射回tblpersonal。

因此,您需要在这些表之间添加更多的联接条件!
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论