0
因此,我一直在替换我的应用程序中的所有旧查询,以删除*=
运算符。在其中一个查询中,我在查找为什么输出不同时遇到了一些问题。更新后的SQL查询返回无数据,即使有交叉连接
这是旧的查询:
SELECT
URMS_User_Name AS FE_Name,
URMS_User_ID AS FE_Code,
COUNT(MRFS_FE_Code) AS No_Of_Jobs,
SCRM_Service_Center_Name AS Service_Center_Name,
CSMSDVLP.fnGetExpertise(URMS_User_ID) AS Expertise
FROM
TBL_User_Master,
TBL_Service_Center_Master,
TBL_User_Role,
TBL_MR_FE_Schedule
WHERE
USRL_Role_Code = 'FE' AND
URMS_User_ID = USRL_User_ID AND
SCRM_Service_Center_ID = URMS_Service_Center_ID AND
URMS_User_ID *= MRFS_FE_Code AND
MRFS_Scheduled_Date >= '28-Oct-2014 00:00:00' AND
MRFS_Scheduled_Date <= '04-Nov-2014 00:00:00'
GROUP BY
SCRM_Service_Center_Name,
URMS_User_Name,
URMS_User_ID
ORDER BY
URMS_User_ID
这是更新查询:
SELECT
URMS_User_Name AS FE_Name,
URMS_User_ID AS FE_Code,
COUNT(MRFS_FE_Code) AS No_Of_Jobs,
SCRM_Service_Center_Name AS Service_Center_Name,
CSMSDVLP.fnGetExpertise(URMS_User_ID) AS Expertise
FROM
TBL_User_Master
Left Join TBL_MR_FE_Schedule
ON URMS_User_ID = MRFS_FE_Code
Inner Join TBL_Service_Center_Master
ON SCRM_Service_Center_ID = URMS_Service_Center_ID
Inner Join TBL_User_Role
ON URMS_User_ID = USRL_User_ID
WHERE
USRL_Role_Code = 'FE'
AND MRFS_Scheduled_Date >= '28-Oct-2014 00:00:00'
AND MRFS_Scheduled_Date <= '04-Nov-2014 00:00:00'
GROUP BY
SCRM_Service_Center_Name,
URMS_User_Name,
URMS_User_ID
ORDER BY
URMS_User_ID
旧的查询返回的数据完全正常,但新的查询返回的空行。我尝试用交叉连接和同样的问题替换所有连接。
虽然奇怪的是如果我运行没有日期条件的查询,一切似乎工作正常。所以,现在,我很困惑我是否犯了一个错误,或者它只是一个疯狂的老运营商。
所以,我应该将日期条件移动到Join子句?好吧,让我尽快尝试,并回到你身边。 它的工作原理。我不知道,我的外部连接自动转换为内部连接。 – jitendragarg 2014-10-28 11:10:38