次のようなニューステーブルがあります
ニュース:
| id | title | description
| 1 | Breaking news | bla bla bla
| 2 | Heavy snowfall in london | bla bla bla
次のようなタイプ テーブル:
| id | type_name | type_code
| 1 | weather | 0567
| 2 | city | 0653
および次のような NewsType テーブル
|id | news_id | type_id | created_by |
| 1 | 2 | 1 | "John" |
| 2 | 2 | 2 | "Alex" |
NewsType テーブルからわかるように、1 つのニュースが 2 つ以上のタイプに分類される可能性があります。
タイプに対応するニュースを表示する必要があります。ユーザーは、都市と天気に関するすべてのニュースを教えてくれると言うかもしれません。これを表示するには、次のようにしています。
select distinct n.* , nt.created_at
from news n, newstype nt, type t where
n.id = nt.news_id and
t.id = nt.type_id
order by nt.created_at
limit 25
問題は、このクエリが同じニュースを 2 回返すことです (内部結合が原因だと思います)。ニュースが 2 つのタイプに分類され、ユーザーが同じ 2 つのタイプのニュースを表示するように要求した場合、1 つのニュース項目のみを取得するには、クエリで何を変更すればよいですか? 2つではなく!