SQL与不明确的列连接

时间:2012-11-16 04:43:15

标签: sql oracle

我正在尝试连接几个表来生成具有先决条件的类列表。 一切都很顺利,除了我需要两个类的名字,前提条件和原始类。

到目前为止我已经

SELECT course_name, c.course_number, course_name, prereq
FROM rearp.course c, rearp.prereq p
WHERE c.course_number = p.course_number;

给了我(你已经可以看到一个问题,其中course_name在那里两次[不知道怎么处理它否则])

  • 课程名称(好的)
  • 班级(是的)
  • 再次
  • 课程名称(等同名称!)
  • 先决条件(好)

忽略格式只需注意课程名称或先决条件仅对应原始课程而非先决条件。

我的问题是我不能让名字匹配。

1 个答案:

答案 0 :(得分:6)

使用别名并确保始终在字段列表中包含表名:

SELECT
    c.course_name,
    c.course_number,
    p.course_name AS prereq_course_name,
    p.prereq
FROM rearp.course AS c, rearp.prereq AS p
WHERE c.course_number = p.course_number

另外,请使用有意义的表别名而不是单个字母,并尝试使用实际连接而不是隐式连接。如果您使用MySQL,则连接将是交叉连接,这是低效且不必要的。

编辑:在字段列表中添加逗号...