Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL连接具有不明确的列_Sql_Oracle - Fatal编程技术网

SQL连接具有不明确的列

SQL连接具有不明确的列,sql,oracle,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; 这给了我(你已经看到一个问题,课程名称在那里有两次[不知道如何处理它否则]) 课程名称(好的,很好) 班级(

我正在尝试连接几个表,以生成具有先决条件的类的列表。 除了我需要先决条件和原始类的类名之外,一切都很好

到目前为止我有

SELECT course_name, c.course_number, course_name, prereq
FROM rearp.course c, rearp.prereq p
WHERE c.course_number = p.course_number;
这给了我(你已经看到一个问题,课程名称在那里有两次[不知道如何处理它否则])

  • 课程名称(好的,很好)
  • 班级(是的)
  • 请再说一遍课程名称(等等,那是同一个名称!)
  • 先决条件(好)
忽略格式只需注意课程名称或先决条件仅与原始课程相对应,而不是先决条件


我的问题是我无法获得匹配的名称。

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

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,那么连接将是交叉连接,这是低效且不必要的


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

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

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,那么连接将是交叉连接,这是低效且不必要的


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

BTW:这是一个实际的
内部联接
,但使用不同的语法,它是ANSI SQL-89联接语法。但正如你所说,这是不推荐的。如果删除where子句,它将是交叉连接。更多细节请参见。哦,是的,没错。我忘记了,在MySQL中,如果没有连接条件,则内部和交叉是相同的。愚蠢的语法,真的,但它是什么。这个问题与p仍然试图找出一个问题why@wat:这可能是因为我忘记了第4行的逗号。错误:ORA-00904:“P”。“课程名称”:无效标识符hmmmBTW:这是一个实际的
内部联接
,但使用不同的语法,它是ANSI SQL-89联接语法。但正如你所说,这是不推荐的。如果删除where子句,它将是交叉连接。更多细节请参见。哦,是的,没错。我忘记了,在MySQL中,如果没有连接条件,则内部和交叉是相同的。愚蠢的语法,真的,但它是什么。这个问题与p仍然试图找出一个问题why@wat:可能是因为我忘记了第4行的逗号。错误:ORA-00904:“P”。“课程名称”:无效标识符hmmm