繁体   English   中英

如何列出所有用户,以及在外部联接中使用子查询

[英]How to list all users, and use a sub-query in an outer join

我想返回所有用户,如果他们参加了会议,我想返回会议信息。 @ConferenceID将是一个参数。

SELECT 
    U.UserId,
    O.ConferenceName,
    O.LocationName
FROM Users

我的外部联接将需要如下所示:

SELECT *
FROM Conferences C
    INNER JOIN Locations L ON C.LocationId = L.LocationId
WHERE UserId = ??
     AND C.ConferenceID = @ConferenceID

是否可以执行外部加入,以便返回所有用户,然后(如果有的话)显示会议信息(可选)?

我尝试了这个:

   SELECT 
    U.*,
    oj.

FROM Users U

    OUTER JOIN ( 
        SELECT c.ConferenceName, L.LocationName
        FROM Conferences C
            INNER JOIN Locations L ON C.LocationId = L.LocationId
        WHERE C.ConferenceID = @ConferenceID
    ) AS oj.UserID = U.UserID

但我得到一个错误

不能绑定多部分标识符“ U.UserId”。

DDL:

User
-UserId


Conference
-ConferenceID
-UserID
-LocationId

Locations
-LocationID

是的,您可以使用外部LEFT JOIN ,尤其是LEFT JOIN ,但是您需要将ConferenceID条件移至join子句,并且需要LEFT JOIN两个表。

SELECT U.UserId
     , C.ConferenceName
     , L.LocationName
  FROM Users U
  LEFT JOIN Conferences C ON C.ConferenceID = @ConferenceID
                         AND C.UserID = U.UserId
  LEFT JOIN Locations L ON L.LocationID = C.LocationId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM