1

結果セットを取得するために、2 つの liferay テーブルusers_で右外部結合を実行しようとしています。expandovalue

すべてのユーザーに対して次のクエリを実行すると、望ましい結果が得られました。

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
                 ) 

私は完全に間違った方向に進んでいますか?お知らせ下さい。

4

1 に答える 1

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

最初のサブクエリの終了後に「AND」が欠落していました。

于 2012-09-12T19:17:09.567 に答える