1

JOIN を理解しようとすると脳が爆発することを認めなければならないので、助けが必要です。

私が達成しようとしているのは、フォーラムの最新の 25 件の投稿に関する情報を返すことですが、メインの投稿テーブルはトピックとフォーラムの数字のみを返しますが、トピックとフォーラムのテキスト名が必要で、そこから取得できます。他の 2 つのテーブル。結合についての私の非常に限られた理解では、ループやその他のおそらく不要なコードで3つ以上のクエリをコーディングするのではなく、1つのクエリでこれらすべてを実行できるようです。

これが主なクエリになります。

SELECT post_id, topic_id, forum_id, post_time
  FROM posts
  ORDER BY post_id DESC
  LIMIT 25

しかし、25 の結果のそれぞれについて、そのテーブルの forum_id がメインのクエリ結果の forum_id と一致するテーブル forums の forum_title と、そのテーブルのtopic_idがメインのクエリ結果topic_id一致するテーブルtopicのtopic_title含めたい.

これがどのように見えるかを見るだけでも、JOIN がどのように機能するかを理解するのに役立つことを願っています。

ありがとう

編集:提案を編集しないように、正確な列名とテーブル名を使用する必要があることに気付きました。正確な名前を使用すると、アクィナスの提案は次のようになります。

SELECT post_id, topic_id, forum_id, post_time, Forum_Title, Topic_Title
  FROM phpbb3_posts 
  INNER JOIN phpbb3_topics
    on phpbb3_topics.topic_id = phpbb3_posts.topic_id
  INNER JOIN phpbb3_forums
    on phpbb3_forums.forum_id = phpbb3_posts.forum_id
  ORDER BY post_id DESC
  LIMIT 25

しかし、このエラーが発生します (これは mysql にあります) 1052 - フィールド リストの列 'topic_id' があいまいです

4

1 に答える 1

1
SELECT post_id, topic_id, forum_id, post_time, Forum_Title, Topic_Title FROM posts 
INNER JOIN topics on topics.topic_id = posts.topic_id
INNER JOIN forums on forums.forum_id = posts.forum_id
ORDER BY id DESC LIMIT 25
于 2013-05-23T02:28:31.710 に答える