2013-04-03 100 views
0

所以基本上我想要做的是在两个表上使用INNER JOIN,但只能从表A中选择特定的行并从表B中选择相应的行?MySQL试图将INNER JOIN和UNION一起使用?

表A被称为“课程”,我想选择名为“微积分”,“英国文学I”和“工作室艺术”的栏目“course_title”下的条目以及相应的'department_id ',并且我会使用'department_id'作为引用来创建一个名为'departments'的第二个表,它具有'department_id'和'department_name'列。

我想这样做的唯一方法是通过使用联合来选择三个特定的课程,但我想不出一种方法来获得INNER JOIN来使用它?我已经尝试了几种不同类型的语法和不断收到错误,这是我的尝试之一:

(SELECT course.course_title, cours' at line 1 
mysql> (SELECT course_title, department_id FROM course WHERE course_title = 'Calculus') 
-> UNION 
-> (SELECT course_title, department_id FROM course WHERE course_title = 'British Literature I') 
-> UNION 
-> (SELECT course_title, department_id FROM course WHERE course_title = 'Studio Art I') 
-> UNION 
-> (SELECT department_name, department_id FROM departments) 
-> FROM departments INNER JOIN course ON departments.department_id = course.department_id; 

这是我尝试的另一个问题:

(SELECT course.course_title, course.department_id, departments.department_id, departments.department_name WHERE course.course_title = 'Calculus') 
-> UNION 
-> (SELECT course.course_title, course.department_id, departments.department_id, departments.department_name WHERE course.course_title = 'British Literature I') 
-> UNION 
-> (SELECT course.course_title, course.department_id, departments.department_id, departments.department_name WHERE course.course_title = 'Studio Art I') 
-> FROM departments INNER JOIN course ON departments.department_id = course.department_id; 

就是否该将任何想法工作?如果是这样,我该如何纠正我的语法?如果不是,另一种方法是什么?

谢谢!

+0

“ERROR 1064(42000):你在你的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“WHERE course.course_title =‘积分’)”我会尝试使用下面建议的IN子句,看看是否可以解决它... – hayleyelisa 2013-04-03 21:30:51

回答

2

你可以写你的查询像下面。

SELECT course.course_title, course.department_id, departments.department_id, departments.department_name 
FROM departments 
    INNER JOIN course ON departments.department_id = course.department_id 
WHERE course.course_title IN ('Calculus', 'British Literature I','Studio Art I') 
+0

啊,好的。完善。非常感谢!! – hayleyelisa 2013-04-03 21:37:40

2

你应该使用IN子句...

这样

WHERE course IN ('Calculus','Physics','Art') 
+0

啊,我明白了。谢谢! – hayleyelisa 2013-04-03 22:07:50