In Access SQL we can sometimes use a self-join to produce a rank order. For example, for [table1]
TID UserId TSource TText
--- ------ ------- -----
412 homer foo bar
503 marge baz thing
777 lisa more stuff
the query
SELECT
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText,
COUNT(*) AS TRank
FROM
table1 AS t1a
INNER JOIN
table1 AS t1b
ON t1a.TID >= t1b.TID
GROUP BY
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText
produces
TID UserId TSource TText TRank
--- ------ ------- ----- -----
412 homer foo bar 1
503 marge baz thing 2
777 lisa more stuff 3
and we can use that as a subquery in our JOIN to the other table
select
t.TRank as uni,
t.TSource as [Source],
t.TText as [Text],
u.Name as [UserId],
u.Image_Url as [ImageFilePath]
from
(
SELECT
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText,
COUNT(*) AS TRank
FROM
table1 AS t1a
INNER JOIN
table1 AS t1b
ON t1a.TID >= t1b.TID
GROUP BY
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText
) AS t
INNER JOIN
table2 AS u
ON t.UserId = u.UIds
producing something like
uni Source Text UserId ImageFilePath
--- ------ ----- ------------ -------------
1 foo bar HomerSimpson whatever1
2 baz thing MargeSimpson whatever2
3 more stuff LisaSimpson whatever3
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…