1

私は次のクエリを持っています

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

tblRawData.reportnum = 12345.410145

あるいは単に

tblRawDatw.reportnum = 410145

しかし、何らかの理由で、番号が2番目の一致(例:410145)と同じでない限り、最初の一致(例:12345.410145)は見つかりません。私はそれをテキストだけでなく数字としてフォーマットしようとしました-そして運がありません。

私が見逃しているかもしれないアイデアはありますか?

更新:2つのテーブルだけで別のクエリを作成しようとしましたが、一致しません。「。」を削除してみました (例:123454.410145から12345410145)そして運がない。これが私の2番目のクエリです。

SELECT tblReports.userID, 
tblRawData.reportnum,
tblRawData.reportcategory,
tblRawData.reportissue,
tblReports.reportdate,
tblReports.reportnumber
FROM tblReports
LEFT JOIN tblRawData ON tblReports.reportnumber LIKE "*" & tblRawData.reportnum;

データがそのようなものである場合。

tblReportsレポート番号:410145 410144 410143 410142 410141

およびtblRawDataレポート番号は次のとおりです。12345.41014541014312344.410141

結果のクエリには、tblReportsからの5つのレコードすべてが表示されますが、これらのレコードのうち3つには、tblRawDataからのメモなどがあります。

4

3 に答える 3

1

不一致を許可するように書き直されました。

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] & "*"

RIGHT JOIN ではなく LEFT JOIN を使用することは、十分に一般的な規則です。

于 2012-10-29T20:11:39.980 に答える
0

すべてをチェックしたわけではありませんが、いくつかのアイデアがあります。たぶん、LIKE条件を交換する必要がありますか?

tblRawData.reportnum LIKE "*" & tblReports.reportnumber

trimそれが問題でなければ、その機能を使ってみてもらえますか?

Trim(tblReports.reportnumber) LIKE "*" & Trim(tblRawData.reportnum)
于 2012-10-29T20:12:22.667 に答える
-1

SQL クエリのワイルドカード文字は、アスタリスクではなくパーセント記号 '%' です。代わりにそれを使用してみてください。しかし、すべての一致を含める場合、なぜそれをクエリに含めるのでしょうか?

ワイルドカード文字参照へのアクセス

于 2012-10-29T19:32:29.873 に答える