PHP / MySQL: リンクテーブルでリンクされた2つのテーブルのデータをクエリする方法

okwaves2024-01-25  8

3 つの MySQL テーブルを作成しました。最後のテーブルの目的は、最初の 2 つのテーブル間の n:m の関係を可能にすることです。

EVENT
event_id
event_name

TAG
tag_id
tag_name

EVENT2TAG
event_id
tag_id

今、PHP を使用して MySQL クエリを作成するのに苦労しています。このクエリは、すべてのイベントとそのすべてのタグのリストを生成します。このように:

<div>
  <h1>My first event</h1>
  #show
  #expo
  #freefood
</div>
        
<div>
  <h1>Another, even better Event</h1>
  #show
  #tv
  #conference
  #freedrinks
</div>
        
<div>
  <h1>Lame event</h1>
  #expo
  #boring
</div>

どうすればよいでしょうか?

すでに試したコードを見せてください

– アントン

2020 年 9 月 4 日 21:21



------------------------

結合したいだけですか?

select e.event_name, t.tag_name
from event e
inner join event2tag et on et.event_id = t.e.event_id
inner join tag t on t.tag_id = et.tag_id
order by e.event_id, t.tag_id

これにより、イベント/タグタプルごとに 1 行と、それらに関連付けられた名前が得られます。アプリケーション内で結果を反復処理して、結果を表示できます。

すべてのタグをカンマ区切りの文字列に集約して、イベントごとに 1 行を生成することにも興味があるかもしれません。

select e.event_name, group_concat(t.tag_name order by t.tag_id) all_tags
from event e
inner join event2tag et on et.event_id = t.e.event_id
inner join tag t on t.tag_id = et.tag_id
group by e.event_id, e.event_name

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。