SQL - Select 来自两个表,其中两个表相等并显示两个值与第三个值连接

SQL - Select from two tables where equal and display two values concatenated along with a third value

我有两个 table:类 和课程。

类 和课程都有 DEPT_CODE 和课程#。

当它们相同时,在 类 table SEMESTER = Spring 和 YEAR = 2018 中,我将 DEPT_CODE + COURSE# 连接为 COURSEID。然后我将它与课程 table.

中的 TITLE 配对

课程:DEPT_CODE |课程# |标题

类:分类 | DEPT_CODE |课程# |年份 |学期

Select 结果:COURSEID (DEPT_CODE + COURSE#) |标题

这是我的尝试,尽管我 运行 遇到了一些错误。

SELECT dept_code + 'course#' AS courseid, title
FROM classes c1, courses c2
WHERE 'c1.course#' = 'c2.course#' AND year = 2018 AND semester LIKE 'Spring';

我在使用 semester = Spring 时遇到了一些问题。使用上面的代码,即使 table 中应该有有效结果,我也会得到 "No Results"。

我希望举个例子可以帮助大家理清思路。

类别 ID | DEPT_CODE |课程# |年份 |学期

c001 |反恐精英 | 400 | 2018 | Spring

c002 |数学 | 400 | 2018 | Spring

课程

DEPT_CODE |课程# |标题

CS | 400 |数据库

数学 | 400 |线性代数

.

预期输出

课程编号 |标题

CS400 |数据库

首先是从您的查询中删除 '

SELECT CONCAT(`c1.dept_code`, `c2.course#`) AS courseid, title
FROM classes c1, courses c2
WHERE `c1.course#` = `c2.course#` AND year = 2018 AND semester LIKE 'Spring';

在正常SQL中,单个quotes/apostrophes (') 中的内容只是文本。因此,您的 WHERE 子句不会 return 任何东西。

试试这个:

SELECT dept_code + 'course#' AS courseid, title
FROM classes c1, courses c2
WHERE c1.course# = c2.course# 
AND year = 2018 
AND semester like 'Spring';

(如果您使用的是SQL服务器,您也可以将列名放在[方括号]中)。

我先发制人地尝试用 # 解决 non-problem。我完全错误的地方是连接的语法。我使用 + 而不是 ||。我是 SQL 的新手,没有意识到 Oracle 与众不同。

select c1.dept_code || c1.course# as course_id, title
from classes c1, courses c2
where c1.course# = c2.course# and year = 2018 and semester like 'Spring';