访问SQL从链接表中选择多个列

时间:2014-10-10 16:39:29

标签: sql ms-access

我有两张桌子。表A:

First_name Last_name score 
   Joo      jojo      100
   Jake      Tim       30

表B:

Name  length
Joo     3
Jake    4
Jojo    4
Tim     3

A的PK是FIrst和姓氏的连接,因为B pk是名称。如果我想打印这样的东西:

First_name Last_name score  First_name_length   Last_name_length

我应该如何解决以下代码:

Select A.*, B.length
From A,B
Where A.First_name=B.Name or A.Last_name=B.Name;

感谢。

更新:我通过@paqogomez从下面的答案稍作改动解决了这个问题。在访问中,使用双内连接,应该使用(),请查看此帖子。谢谢大家的帮助。

double inner join in access db

2 个答案:

答案 0 :(得分:1)

两次加入你的名字表就可以做到这一点:

select
  b1.name as First_name,
  b2.name as Last_name,
  a.score as score,
  b1.length as First_name_length,
  b2.length as Last_name_length
from
  (a
  inner join b as b1 on a.First_name = b1.name)
  inner join b as b2 on a.Last_name = b2.name

然而,您遇到的问题是,如果2个人拥有相同的名字或姓氏。最好是清理数据并为每个用户提供唯一的值。

编辑:

我假设您要使用表B中的值,如果您真的只是获取名称的字符串长度,那么请使用@ Srikanth的答案。

当OP使用Access时,我使用sql server来显示它this fiddle

access's double inner join

添加了上面的Parens

答案 1 :(得分:1)

以下代码Len足以满足所需的输出

Select First_name, 
       Last_name, 
       score,  
       len(First_name) AS First_name_length, 
       len(Last_name) AS Last_name_length
From A