我有一个状态表,其中包含以下行:
pk Status
1 Employed
2 Unemployed
3 Retired
还有一个名为User的表,其中详细信息存储为
pk_User F_Status M_Status
1 1 2
2 2 3
3 3 1
其中F_status
和M_Status
的值被称为主表状态。
现在的问题是我需要显示值并使用左外连接但是我不能使用相同的表...
我的查询是:
select Status from User
left outer join Status on
Status.pk=User.M_Status
where pk_User=1;
这里我只能显示一行,而不能同时显示两行。请帮忙
答案应该是:
pk_User | F_Status | M_Status
--------+-----------+------------
1 | Employeed | Unemployeed
答案 0 :(得分:2)
试试这个:
SELECT
u.pk_User,
fs.status AS F_Status,
ms.status AS M_Status
FROM user u
INNER JOIN status fs ON u.f_status = fs.pk
INNER JOIN status ms ON u.m_status = ms.pk
这会给你:
╔══════════╦═════════════╦════════════╗
║ PK_USER ║ F_STATUS ║ M_STATUS ║
╠══════════╬═════════════╬════════════╣
║ 3 ║ Retired ║ Employed ║
║ 1 ║ Employed ║ Unemployed ║ <-------
║ 2 ║ Unemployed ║ Retired ║
╚══════════╩═════════════╩════════════╝
您可以添加WHERE
子句来过滤PK_User
或任何其他列。
答案 1 :(得分:1)
您似乎正在尝试对同一个表格m_status
和f_status
进行多次加入。
SELECT fs.f_status, ms.m_status FROM user u
INNER JOIN status fs ON u.f_status = fs.status
INNER JOIN status ms ON u.m_status = ms.status
WHERE u.pk_user = 1;