0

したがって、joomlaにはいくつかのテーブルがあります。

1) users - uid, username, email
2) groups - gid, title
3) user_group_map - uid, gid

したがって、私がやりたいのは、SQLを記述して、一部のグループには含まれているが他のグループには含まれていないユーザーを簡単に見つけることができるビューを作成することです。

したがって、私が考えていたのは、ユーザーテーブルからuid、username、emailを取得し、user_group_mapテーブルにそのuid/gidのエントリがあるかどうかである各グループタイトルのboolフィールドを持つビューを作成することでした。

わかる?

4

2 に答える 2

0

ええ、あなたはこれをこのように作ることができます

SELECT uid, username, email, CASE WHEN IFNULL(ug.uid,0)=0 THEN '0' ELSE '1' END
FROM user u
LEFT JOIN user_group_map  ug
ON ug.uid = u.uid, groups g

ユーザーがグループに属している場合は、1 が返されます。

于 2013-02-25T19:08:15.363 に答える
0

次のクエリは、"$inlist" と "$notinlist" という 2 つの変数があることを前提としています。

select u.*
from user_group_map ug join
     users u
     on u.uid = ug.uid join
     groups g
     on ug.gid = g.gid
group by u.uid
having sum(case when $inlist like concat('%', g.title, '%') then 1 else 0 end) =
           length($inlist) - length(replace($inlist, ',', '') and
       sum(case when $notinlist like concat('%', g.title, '%') then 1 else 0 end) = 0

これは、グループ名にコンマが含まれていないことを前提としています。

この SQL はテストしていないため、構文エラーがある可能性があります。

于 2013-02-25T19:08:21.753 に答える