Usersデータベース、Postsデータベース、PostPermissionsデータベースがあります。
データベーススキーム(理解できるように知っておく必要がある)は次のようなものです。
役職:
id :int(11) | description :varchar(255) | creator_user_id :int(11)
PostPermissions:
id :int(11) | post_id :int(11) | entity_id :int(11) | permission :tinyint(1) (bool) | orderby tinyint(4)
したがって、PostPermissionsでは、さまざまなタイプのアクセス許可を設定できますが、それはすでに機能しています。
MySQLクエリで次のようなものを作成しました。
SELECT Post.id
FROM posts as Post
LEFT JOIN post_permissions AS PostPermission
ON Post.id = PostPermission.post_id
WHERE Post.creator_user_id = 4
GROUP BY Post.id HAVING GROUP_CONCAT(PostPermission.permission) like "%1"
しかし、2つの問題がありGROUP_CONCAT(PostPermission.permission)
ます。すべての投稿について、すべての権限値を取得します。私が置くGROUP_CONCAT(DISTINCT PostPermission.permission)
と、最初にキャッチされるように順序付けられた0と1のみが取得されます...
投稿と一致したPostPermissionsの最後の行のみを処理する方法はありますか(すでに注文されているため)?