2012-09-12 16 views
1

我試圖在兩個生命表上執行右外連接— users_expandovalue —獲取結果集。在兩個表上的右外部連接,其中ON子句具有子查詢

當我對所有用戶做了以下查詢時,我得到了期望的結果。

SELECT USER_.FIRSTNAME 
    , USER_.LASTNAME 
    , USER_.EMAILADDRESS 
    , USER_.JOBTITLE 
    , expandovalue.data_ 
from expandovalue 
    right outer join 
    user_ on expandovalue.classpk = user_.userid 
    and expandovalue.columnid =35695; 

當試圖對一組用戶(用戶組的一部分)執行相同操作時,它出錯了。下面查詢:

SELECT USER_.FIRSTNAME 
    , USER_.LASTNAME 
    , USER_.EMAILADDRESS 
    , USER_.JOBTITLE 
    , expandovalue.data_ 
from expandovalue 
    right outer join 
     user_ on expandovalue.classpk 
    in (select userid 
      from user_ 
     where userid 
       in (select userid 
         from users_usergroups 
        where usergroupid = 40073 
        ) and status =0) = user_.userid in 
              (select userid 
               from user_ 
               where userid 
                in (select userid 
                 from users_usergroups 
                where usergroupid = 40073 
                ) 
               and status =0 
              ) and expandovalue.columnid =35695 

下面是這給userid S的人在特定用戶組的子查詢。

(select userid 
    from user_ 
    where userid in 
       (select userid 
        from users_usergroups 
        where usergroupid = 40073) 
         and status =0 
       ) 

我的方向是否完全不正確?請指教。

+0

1.您的查詢缺少'AND': ...和status = 0)= Smile ** AND ** user_.userid in ... 2.您使用的是哪個數據庫? – lleite

+0

在後端使用Oracle 10g。哪裏是一個和丟失。謝謝lleite – user1666444

+0

張貼的好主意是包含錯誤消息。下次注意。歡迎使用Stack Overflow – RichardTheKiwi

回答

1

嘗試此查詢:

SELECT USER_.FIRSTNAME, 
     USER_.LASTNAME, 
     USER_.EMAILADDRESS, 
     USER_.JOBTITLE, 
     expandovalue.data_ 
    from expandovalue 
    right outer join user_ 
    on expandovalue.classpk IN 
      (select userid 
      from user_ 
      where userid in (select userid 
           from users_usergroups 
           where usergroupid = 40073) and 
        status = 0) AND 
     user_.userid in (select userid 
          from user_ 
          where userid in (select userid 
              from users_usergroups 
              where usergroupid = 40073) AND 
           status =0) AND 
     expandovalue.columnid = 35695 

有第一個子查詢結束後「與」失蹤。

+0

您應該從上面刪除「= Smile」。 OP在編輯中從原始問題中刪除了該文本(單擊編輯時間查看編輯歷史記錄),但顯然您已經在編輯時查看了問題。隨着「=微笑」刪除,我懷疑它會起作用。謝謝。 –