sql查询用一个连接两列

时间:2012-11-08 18:24:44

标签: sql ms-access

我在ms access 2010中有2个表,如下所示

USERS (u_id, u_name)
LOAN (l_id, l_from[ref users.u_id], l_to[ref users.u_id], l_amount)

Users
+------+--------+
| u_id | u_name |
+------+--------+ 
| 1    | abc    |
| 2    | def    |
+------+--------+

Loan
+-----+--------+------+----------+
|l_id | l_from | l_to | l_amount |
+-----+--------+------+----------+
| 1   | 2      | 1    | 100      |
| 2   | 2      | 1    | 100      |
| 3   | 1      | 1    | 50       |
+-----+--------+------+----------+

我想从贷款表

中选择名称而不是数字(l_from& l_to)
select
  loan.l_id,
  loan.l_from,
  users.u_name user_from,
  loan.l_to,
  users.u_name as user_to,
  loan.l_amount
from loan, users
where ???

2 个答案:

答案 0 :(得分:3)

JOIN users表格两次如下:

SELECT
  l.l_id,
  fromusers.u_name AS user_from,
  tousers.u_name AS user_to,
  l.l_amount
FROM loan l
INNER JOIN users fromusers ON l.l_from = fromusers.u_id
INNER JOIN users tousers ON l.l_to = tousers.u_id

SQL Fiddle Demo(它是SQL Server 2008,但我认为ms-access的语法应该相同)

答案 1 :(得分:2)

只需加入“用户”表两次,每次都可以加入一次。

SELECT l.l_id, uFrom.u_name AS user_from,
    uTo.u_name AS user_to, l.l_amount
FROM LOAN l
INNER JOIN Users uFrom ON l.l_from = uFrom.u_id
INNER JOIN Users uTo ON l.l_to = uTo.u_id