投稿のテーブルとユーザーのテーブルがあり、その間に 2 つの関係を持つテーブルがあります。1 人のユーザーが多数の投稿などを行うことができます。
投稿テーブルの星付きの列に 0 または 1 を追加することで、投稿に「星を付ける」ことができます。スター付きの投稿はユーザーごとに 1 つだけですが、スター付きの投稿がないユーザーもいます。
ユーザーごとに1つの投稿を取得するクエリを作成する必要があります(したがって、「グループ化」を使用しています)。これらの投稿のうち、星付きの投稿を取得する必要があります。すべてのユーザーが星付きの投稿を持っているわけではないので、単に使用することはできません
WHERE starred = 1
基本的に、グループをスター付きで注文して、スター付きの投稿がある場合はスター付きの投稿を取得し、ない場合は通常の投稿を取得するようにします。
これは私がこれまでに持っているものです:
SELECT
posts.post_title
FROM
posts
INNER JOIN rel_company_post ON posts.post_id = rel_company_post.post_id
INNER JOIN companies ON rel_company_post.company_id = companies.company_id
GROUP BY companies.company_id
ORDER BY posts.starred DESC