只是一个关于命名来自其他表的列的快速问题,下面我将表放在SQL语句中,但之后我把缩写版本“MO”这是正确的/这将在所有情况下工作还是我应该只是坚持像module.mod_code这样的完整版本?
SELECT MO.MOD_CODE, MO.MOD_NAME, MO.ECTS_UNITS,MO.DESCRIPTION
FROM MODULE MO, SYLLABUS SY, PROGRAMME PR
WHERE MO.MOD_CODE = SY.MOD_CODE
AND SY.PROG_CODE = PR.PRO_CODE
AND PR.NFQ_LEVEL = ‘LEVEL 9’
AND MO.DESCRIPTION LIKE ‘%RESEARCH%’ OR DESCRIPTION LIKE ‘%QUALATIVE%’ OR DESCRIPTION LIKE ‘%QUANTITATIVE%’;
谢谢:)
答案 0 :(得分:1)
如果我理解正确,你试图使用表别名来引用列,并且想知道使用MO。[column]和module。[column]是否有任何区别?
如果是这种情况,则最好使用表别名来引用该列。这是因为您可以加入到同一个表中以检索不同的数据子集。如果这样做,您将需要定义您希望数据来自哪个集合。
模块AS M ----程序AS P ------模块AS SUBM
答案 1 :(得分:0)
你无法坚持完整版。为表或子查询指定别名后,即查询范围内该对象的名称。实际上,会发生的事情是表名变为表别名,因此您可以使用它来限定表中的列。
您还应该学习正确的显式JOIN
语法。我也猜测你在WHERE
条款中缺少括号:
SELECT MO.MOD_CODE, MO.MOD_NAME, MO.ECTS_UNITS,MO.DESCRIPTION
FROM MODULE MO JOIN
SYLLABUS SY
ON MO.MOD_CODE = SY.MOD_CODE JOIN
PROGRAMME PR
ON SY.PROG_CODE = PR.PRO_CODE
WHERE PR.NFQ_LEVEL = 'LEVEL 9' AND
(MO.DESCRIPTION LIKE '%RESEARCH%' OR
MO.DESCRIPTION LIKE '%QUALATIVE%' OR
MO.DESCRIPTION LIKE '%QUANTITATIVE%'
);
如果您在此查询中尝试SELECT MODULE.MOD_CODE
之类的内容,则会返回错误,因为表别名MODULE
未分配给任何对象。