2014-12-07 64 views
0

只是一个关于命名来自其他表的列的快速问题,下面我把表放在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

编号Beacuse QUALATIVE不是一个字 – Strawberry 2014-12-07 23:10:50

回答

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没有分配到任何物体。

+0

如果在这种情况下我使用SELECT MODULE.MOD_MOD CODE FROM MODULE,那会工作吗? – Zinconium 2014-12-08 03:12:00

+0

@Zinconium。 。 。这会起作用,因为你还没有给'MODULE'分配一个别名,所以表名本身就是别名。 – 2014-12-08 03:49:41

1

如果我理解正确的话,你想参考使用表的别名列,并且不知道是否有使用MO任何区别。[专栏]和模块。[柱]?

如果是这样,则最好使用表别名来引用列。这是因为您可能会回到同一个表来检索不同的数据子集。如果你这样做,你将需要定义你想要数据来自哪一组。

模块为M ----计划为P ------模块SUBM