如何加入空表

时间:2014-03-29 11:30:08

标签: sql join outer-join

我想知道是否可以创建一个为空表显示空值的连接。

我想要这样做的原因是我希望用户能够创建会话,该会话在创建时自动递增ID。然后,用户可以使用此会话ID通过中间会话船表添加船只并为船只选择值。

然后,任何人都可以查看显示会话相关信息的联接,其中包含来自多个表的信息,例如SessionID,CoachID,FirstName(教练),Second Name(教练),Boat ID,Boat Name。

创建会话后,我希望用户能够查看此联接,以查看将插入会话船的会话的ID号。

然而,由于此时会话船仍然为空,因此无法显示连接表,因此无法找到ID号!

我已经尝试过使用Left Joins和Outer Left Joins以及其他任何我能想到的加入Session和Session Boat但是到目前为止没有任何工作......

有没有办法可以让Join显示即使是空表,还是我可以使用的任何其他工作?

提前致谢!

<asp:SqlDataSource ID="SqlDataSource2" runat="server"     ConnectionString="<%$             ConnectionStrings:Rowing ClubConnectionString %>" SelectCommand="SELECT            Session.SessionID,        Session.DateTime, Session.CrewID,  Session.CoachID, Member.FirstName, Member.Surname,     SessionBoats.BoatID, Boat.BoatName, Session.LaunchID
FROM            SessionBoats  LEFT JOIN
                     Session ON Session.SessionID = SessionBoats.SessionID
LEFT JOIN Boat ON SessionBoats.BoatID = Boat.BoatID
LEFT JOIN Coach ON Session.CoachID = Coach.CoachID
LEFT JOIN Member ON Coach.MemberID = Member.ID
"></asp:SqlDataSource>

1 个答案:

答案 0 :(得分:0)

如果要查看Session Boats中的所有内容,请使用从该表开始的左外连接:

SELECT s.Session ID, s."Date Time", s."Crew ID", s."Coach ID", m."First Name", m.Surname,
       sb."Boat ID", b."Boat Name", s."Launch ID"
FROM "Session Boats" sb LEFT JOIN
     Session s 
     ON s."Session ID" = sb."Session ID" LEFT JOIN
     Boat b
     ON sb."Boat ID" = b."Boat ID" LEFT JOIN
     Coach c
     ON s."Coach ID" = c."Coach ID" LEFT JOIN
     Member m
     ON c."Member ID" = m.ID;

这是一般规则:从要保留所有行的表开始,然后继续使用所有表的左连接。我还引入了表别名,以使您的查询更具可读性。