0

请多多包涵,我是 Access 和 SQL 的新手。

我要做的是编写一个 SQL 查询来过滤两个表 - 一个包含分成两列的单词,另一个包含文本。本质上,我想要的是一个新表,它为我提供了两列单词与文本列的所有完全匹配。

这是一个类似的数据库来模拟我想要的结果:

Table A:
FirstName:               LastName:
John                     Doe
Jane                     Doe
Josh                     Smith
James                    Jones
David                    Johnson

Table B:
FullName:
Jake Davidson
Mike Peters
Jason James
John Michael Smith

Query Result:
FirstName:   LastName:      FullName:
John         Doe            John Michael Smith
Josh         Smith          John Michael Smith
James        Jones          Jason James

(请注意,大卫 - 戴维森匹配没有出现。即我只想要完全匹配)

所以帮我填空:

SELECT TableA.FirstName,TableA.LastName, TableB.FullName
FROM TableA,TableB
WHERE TableB.FullName LIKE (has an exact match with TableA.FirstName--not sure what to put )
UNION
SELECT TableA.FirstName,TableA.LastName, TableB.FullName
FROM TableA,TableB
WHERE TableB.FullName LIKE (has an exact match with TableA.LastName--not sure what to put)
;
4

2 回答 2

0

这将取决于您希望它对具有两个以上名称的 FullNames 做什么,例如“John Jacob Smith”,但是,假设您希望它忽略中间词[s],然后尝试

 Select firstname, lastname, fullname 
 from tableA a 
   Join tableb f 
      On f.firstname = Mid(a.fullname, 1, InStr(a.fullname, " ")-1) 
   Join tableb l 
      On l.lastname = Mid(a.fullname, InStrRev(a.FullNamee, " ")+1)
于 2013-05-07T12:51:23.943 回答
0

这是一种将FullName两者Firstname与 和进行比较的方法LastName

select a.Firstname, a.LastName, b.FullName
from tableA as a inner join
     tableB as b
     on instr(' '&b.FullName&' ', ' '&a.FirstName&' ') > 0 and
        instr(' '&b.FullName&' ', ' '&a.Lastname&' ') > 0

它假定名称的分隔符是一个空格(如您的示例中所示)。比较在 的开头和结尾附加一个空格FullName,然后查找以空格填充的名字和姓氏。

于 2013-05-07T13:10:38.760 回答