我是一名SQL Server专家,使用的Oracle编码有限。我继承了一堆需要转换为ANSI的视图。我正在寻找的是一个人,如果可能的话,以系统的方式逐步教育我。我有大三学生会阅读和理解TSQL样式代码,而不是原来的样子。我想利用这些知识,并让他们开始研究它们。有许多。转换工具将无法使用,我们没有时间玩,没有预算购买,而且我们的IT部门不会让我们安装任何东西。 (我们必须手动执行此操作)
我想了解基于解释代码的步骤(系统的方法),而不是学习数据或尝试理解为什么现有代码是这样编写的。
例如,这些步骤是:
此任务将由初级SQL Server管理员完成,因此它必须尽可能简单明了。
FROM WORK MECHANISMS WM,
WT_MANPOWER_RESOURCES WTMR,
LOGICAL_ITEMS LI,
APSWHS.WMX_LOG_REL_ELEM WLRE,
WMECH_DSGN_COMP_ELEMENTS WDCE,
WORK_TASKS WT,
persons_v per,
APSWHS.WMX_WO_WF_STATUS WFA,
RT_DETAILS RTD
WHERE
WFA.WF_SEQ > 639
AND WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
AND WTMR.WTASK_DB_ID = 0
AND WTMR.WTMANPOW_TYPE = ‘LEAD’
AND WT.WMECH_DB_ID = WM.DB_ID
AND WT. DB_ID= 0
AND WFA.WM_DB_ID = WM.DB_ID
AND PER.per_db_id = wm.assigned_to_per_db_id
AND RTD.WMECH_DB_ID = WM.DB_ID
AND WDCE .WMECH_DB_ID = WFA.WM_DB_ID
AND WDCE.LITM_ID = WLRE.LITM_ID
AND WDCE.LITM_ID = LI.ID
AND WDCE.PRIMARY_DCID_FLAG = ‘Y’
答案 0 :(得分:1)
我假设您要从表列表(WHERE
子句中的联接谓词)迁移到ANSI JOIN语法。这与T-SQL无关。
理想情况下,您将获得ERD并以可视方式检查应按什么顺序列出表格。我个人觉得这比单纯的文字要容易。虽然,也可以使用纯文本。步骤如下:
FROM WORK_MECHANISMS WM
WHERE 1 = 1 -- No predicates on this table
FROM WORK_MECHANISMS WM
JOIN WT_MANPOWER_RESOURCES WTMR
ON WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
WHERE WTMR.WTASK_DB_ID = 0
AND WTRM.WTMANPOW_TYPE = 'LEAD'
请注意,这不是原始表列表中的下一个表,而是另一个表,即可以在不创建笛卡尔积的情况下连接到现有连接图的下一个表。特别是,我暂时跳过了LOGICAL_ITEMS
和APSWHS.WMX_LOG_REL_ELEM
和WMECH_DSGN_COMP_ELEMENTS
。稍后我将它们添加到图中。
FROM WORK_MECHANISMS WM
JOIN WT_MANPOWER_RESOURCES WTMR
ON WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
JOIN WORK_TASKS WT
ON WT.WMECH_DB_ID = WM.DB_ID
WHERE WTMR.WTASK_DB_ID = 0
AND WTRM.WTMANPOW_TYPE = 'LEAD'
AND WT.DB_ID = 0
您将继续向新语句中添加表,直到您添加了所有表。如果您遇到过(+)
运算符,那么“ just”就可以正确使用LEFT JOIN
语义。