Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Join MS Access 07-联接查询中的通配符_Join_Ms Access 2007 - Fatal编程技术网

Join MS Access 07-联接查询中的通配符

Join MS Access 07-联接查询中的通配符,join,ms-access-2007,Join,Ms Access 2007,我有以下疑问 SELECT tblUsers.userfullname, tblReports.reportdate, tblReports.reportnumber, tblRawData.reportcategory, tblRawData.reportissue FROM tblRawData RIGHT JOIN (tblUsers RIGHT JOIN tblReports ON tblUsers.userID = tb

我有以下疑问

SELECT tblUsers.userfullname, 
       tblReports.reportdate, 
       tblReports.reportnumber, 
       tblRawData.reportcategory, 
       tblRawData.reportissue
FROM tblRawData 
RIGHT JOIN (tblUsers RIGHT JOIN tblReports ON tblUsers.userID = tblReports.userID) ON tblReports.reportnumber LIKE "*" & tblRawData.reportnum
WHERE (
       ((tblUsers.username) Like "*" & [Forms]![frmSelect]![txtUser] & "*") 
       AND
       ((tblUsers.userShift) Like "*" & [Forms]![frmSelect]![txtShift] & "*")
      );
哪一个有效-除了

ON tblReports.reportnumber LIKE "*" & tblRawData.reportnum
我想匹配的是

tblReports.reportnumber = 410145

或者只是

tblRawDatw.reportnum = 410145
但出于某种原因,它不会找到第一个匹配项,例如:12345.410145,除非数字与第二个匹配项相同,例如:410145。我尝试将它格式化为数字和文本,但没有成功

知道我遗漏了什么吗

更新:我尝试用两个表进行另一个查询,但它不喜欢匹配。我试着取下那根绳子。示例:12345.410145变为12345410145,没有运气。这是我的第二个问题

SELECT tblReports.userID, 
tblRawData.reportnum,
tblRawData.reportcategory,
tblRawData.reportissue,
tblReports.reportdate,
tblReports.reportnumber
FROM tblReports
LEFT JOIN tblRawData ON tblReports.reportnumber LIKE "*" & tblRawData.reportnum;
如果数据是这样的话

TBL报告编号: 410145 410144 410143 410142 410141

tblRawData报告编号如下: 12345.410145 410143 12344.410141


结果查询应显示tblReports中的所有5条记录,但其中三条记录包含tblRawData中的注释等。

SQL查询的通配符是百分号“%”,而不是星号。试着用它来代替。但是,如果您要包含所有匹配项,那么为什么要在查询中包含这些内容呢


重写为不允许匹配

SELECT 
   u.userfullname, 
   r.reportdate, 
   r.reportnumber, 
   q.reportcategory, 
   q.reportissue
FROM (tblusers u 
LEFT JOIN tblreports r 
ON u.userid = r.userid) 
LEFT JOIN (
   SELECT 
      Val(Mid([reportnum],InStr([reportnum],".")+1)) AS RepNo, 
      r.reportcategory, 
      r.reportissue
   FROM Rawdata AS r)  AS q
ON r.reportnumber = q.RepNo
AND q.username  Like "*" & [Forms]![frmSelect]![txtUser] & "*"
AND q.userShift Like "*" & [Forms]![frmSelect]![txtShift] & "*"

使用左连接而不是右连接是一种非常常见的惯例。

我没有检查所有内容,但我有一些想法。也许你必须交换类似的条件

tblRawData.reportnum LIKE "*" & tblReports.reportnumber
如果这不是问题,您可以尝试使用微调功能吗

Trim(tblReports.reportnumber) LIKE "*" & Trim(tblRawData.reportnum)

ANSI-89是该类型-因此它是*。我不理解你关于包含所有比赛的问题。我的意思是,如果你包含所有比赛,为什么它在你的where子句中?举个简单的例子:从我喜欢的“*”表中选择*您不需要where子句。如果没有更多的解释,这个答案恐怕不适合MS Access。在MS Access中使用默认ANSI设置时,通配符为*,在Access外部使用Jet/ACE引擎和ADO,或在MS Access ANSI92内部使用SQL Server兼容设置时,通配符为%。Chasseter似乎在MS Access中工作,因此通配符确实是*。是的,“*”似乎在MS Access中工作。抱歉造成混乱。抱歉耽搁-被飓风桑迪耽搁了。对于这种不幸运的情况,它会给我来自rawdata的所有匹配记录,以及来自rawdata中不存在的报告的所有记录-并且rawdata匹配似乎也忽略了通配符。不匹配的记录需要包含为或d。reportnumber为空。我将在通配符上与您联系。我希望你和你的家人都安全,保持安全好吧,这场比赛是错误的。这是tblRawData.reportnum 12345.410145,类似于reportnumber*&410145不走运,我尝试了d.reportnum为Null和r.reportnum为Null,以达到相同的效果好的,我发布了一个完全不同的方法。可能会很慢。
Trim(tblReports.reportnumber) LIKE "*" & Trim(tblRawData.reportnum)