外部联接的Oracle语句

时间:2010-12-30 04:32:45

标签: sql oracle

我有两张桌子:

模块表

  • 的moduleId
  • ModuleData
  • ModuleSectionID

UserProfile表

  • UserProfileID
  • 用户ID
  • 的moduleId

我需要将两个表连接在一起,但是每个Module条目都不需要UserProfile表。我将传递两个变量ModuleSectionID和UserID。这些将有助于缩小最终结果的范围。

期望的结果应该是这样的

M.ModuleID, M.ModuleData, M.ModuleSection, U.UserProfileID, U.UserID, U.ModuleID
---------------------------------------------------------------------------------
13         "DataData"     3                1                132       13
12         "Data2Data2"   3                Null             Null      Null
15         "Data3Data3"   3                3                132       15

2 个答案:

答案 0 :(得分:3)

使用:

   SELECT m.moduleid,
          m.moduledata,
          m.modulesection,
          up.upserprofileid,
          up.userid, 
          up.moduleid
     FROM MODULE m
LEFT JOIN USERPROFILE up ON up.moduleid = m.moduleid
                        AND up.userid = IN_USERID
    WHERE m.modulesection = IN_MODULESECTIONID

IN_USERIDIN_MODULESECTIONID代表您要提供给查询的变量。

答案 1 :(得分:1)

试试这个:

SELECT M.ModuleID, M.ModuleData, M.ModuleSectionID, U.UserProfileID, U.UserID, U.ModuleID
    FROM Module m, UserProfile u 
 WHERE M.ModuleSctionID = <MODULE_SECTIONID_PARAMETER>
 AND M.ModuleID = U.ModuleID(+)
 AND <USER_ID_PARAMETER> = U.UserID (+)