SQL Query用于显示数据

时间:2011-12-24 16:06:03

标签: sql

我有以下两个数据库表

TableA

PK_A      FK_B      FK_USER
1         1         userLogin
2         2         userLogin
3         3         otherUserLogin


TableB


PK_B
1
2
3
4

我需要的是一个查询,在这种情况下返回特定用户的以下结果'userLogin'

Result

   PK_B     PK_A     FK_USER
   1        1        userLogin
   2        2        userLogin
   3        3
   4

请注意,查询必须始终返回表B所具有的所有项目。

提前致谢 节日快乐

2 个答案:

答案 0 :(得分:3)

试试这个:

SELECT b.PK_B, a.PK_A, a2.FK_USER
FROM TableB AS b LEFT OUTER JOIN TableA AS a 
    ON b.PK_B = a.FK_B
    LEFT OUTER JOIN TableA AS a2
    ON a.PK_A = a2.PK_A
        AND a2.FK_USER = 'userLogin'

TableA的额外LEFT OUTER JOIN是由于海报的输出请求所致:

Result

PK_B     PK_A     FK_USER
1        1        userLogin
2        2        userLogin
3        3
4

FK_USER仅返回'userLogin'

的匹配项

答案 1 :(得分:1)

尝试:

SELECT b.PK_B, 
       a.PK_A, 
       case when a2.FK_USER = 'userLogin' then 'userLogin' end as FK_USER
FROM TableB AS b 
LEFT OUTER JOIN TableA AS a ON b.PK_B = a.FK_B