2013-09-30 215 views
0

我不确定我是否使用了正确的术语。查询JOIN/*覆盖*字段

SELECT movies.*, actors.`First Name`, actors.`Last Name` 
From movies 
Inner Join actors on movies.`actor1` Where movies.`actor1` = actors.`indexActors`; 
#Inner Join actors on movies.`actor2` Where movies.`actor2` = actors.`indexActors`; 

我把第二行注释掉了,每个都单独工作,我想知道如何将它们合并。

2ndly,当我执行查询,我得到的结果:

ID Title     Runtime Rating Actor1 Actor2 First Name Last Name 
1 Se7en     127  R  1  2  Morgan  Freeman 
2 Bruce Almighty   101  PG-13 1  3  Morgan  Freeman 
3 Mr. Popper's Penguins 94  PG  3  4  Jim  Carrey 
4 Superbad    113  R  4  5  Emma  Stone 
5 Crazy, Stupid, Love. 118  PG-13 4  Null Emma  Stone 

有没有一种方法来添加从第2的结果加入到最右边的列? 另外,是否可以合并来自First Name和Last Name的字符串/ VARCHAR,然后在相应的Actor字段下显示该值? (又名第1行的Actor 1下的字段将是“Morgan Freeman”而不是“1”)

谢谢。

+0

取决于你的分数... http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat – zod

+0

SELECT movies。*,actors.'First Name',actors。 'Last Name',actor2.firstname || actor2.lastname ... try ...寻找工会 – zod

+0

您发布的sql无效。你确定它有效吗? –

回答

0

您的sql无效,但您可以通过两次连接到同一个表并使用不同的别名来实现目标。这样的事情

select blah blah blah 
from table1 t1 join table2 t2 on t1.field1 = t2.field1 
join table2 t2_again on t1.field1 = t2_again.field2 
etc 

至于在单场的连结第一和最后一个名字,大多数数据库有一个方法来连接字符串,但他们并不都是一样的。你必须指定你的数据库引擎。