Access SQL从链接表中选择多列
我有两张桌子。表A:Access SQL从链接表中选择多列,sql,ms-access,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的主键是名字和姓氏的连接,B的主键是名字。如果我想打印这样的内容: First_name Last_name score First_name_length Last_name_length
First_name Last_name score
Joo jojo 100
Jake Tim 30
表B:
Name length
Joo 3
Jake 4
Jojo 4
Tim 3
A的主键是名字和姓氏的连接,B的主键是名字。如果我想打印这样的内容:
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对下面的答案稍作修改就解决了这个问题。在access中,使用双内连接时,应该使用(),请查看此帖子。谢谢你们的帮助
两次加入您的姓名表将完成以下任务:
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
然而,你会遇到的问题是,如果两个人的名字或姓氏相同。最好是清理您的数据并为每个用户提供唯一的值
编辑:
我假设您想使用表B
中的值,如果您真的只是得到名称的字符串长度,那么请使用@Srikanth的答案
OP使用Access时,我使用sql server进行了测试,结果表明它工作正常
上面为添加的参数以下代码足以满足所需的输出
Select First_name,
Last_name,
score,
len(First_name) AS First_name_length,
len(Last_name) AS Last_name_length
From A
英雄联盟我甚至没有想到他只是在寻找字串的长度。如果是这样的话,这就是答案+1是的,最初我想使用两个类似于您的联接,但再看一眼表B中的数据,我觉得这应该可以完成这项工作。这可能只是一个糟糕的示例数据,但我们需要OP的澄清才能确定。感谢您的回答。真的让我大开眼界。但我不是只寻找字符串长度,只是想知道如何从链接表中选择列。但是你的答案确实是一个捷径和明智的想法。请澄清表B是否用于存储第一个/最后一个名称的长度是的,B用于存储纵向名称。在这种情况下,我的答案是获得所需结果的最简单查询。在我看来,困难的部分是我不知道如何处理表B,因为A.last_name和A.First_name都与之相关。谢谢,内部连接似乎是最好的选择。它返回语法错误,我应该先定义b1还是b2?再次感谢似乎不喜欢第二个内部连接,请在它们之间添加“?”?谢谢。@Hendooqian不,您在OP中使用的是较旧的sql 89语法。对于
内部联接(sql 92语法),表之间没有逗号。你可以在我贴的提琴上看到它在起作用。我知道现在发生了什么。Access使用不同格式的双内连接,请检查我的更新。再次感谢。