結合テーブルentries_keywordsを使用して、エントリとキーワードの間に多対多の関係があります。キー「wake」と「up」の両方のすべてのエントリをフェッチしたい。私が思いついた唯一の方法はこれです。別の検索ワードを投入したい場合は、さらに悪化します。これをどのようにリファクタリングしますか?サブクエリを使用する以外に参加する方法はありますか?
select *
from
(
select *
from entries e
inner join entries_keywords ek
on e.id = ek.entry_id
inner join keywords k
on ek.keyword_id = k.id
where k.key = 'wake'
) e
inner join entries_keywords ek
on e.id = ek.entry_id
inner join keywords k
on ek.keyword_id = k.id
where k.key = 'up';