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';
我有两个 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';