-1

私はMySQLを初めて使用し、3つのテーブルから選択しようとしています。これを行う最善の方法がわからないので、次のクエリを試しました (「トピック」テーブルに 2 番目の内部結合を追加するまでは機能していました)。

SELECT 
    posts.id AS post_id, 
    topic_id,
    date, 
    text, 
    username AS user,
    users.id AS user_id,
    topics.title AS title
FROM 
    posts 
INNER JOIN 
    users 
ON
    posts.user_id = users.id
INNER JOIN
    topics
ON
    topics.id =:topic_id
WHERE 
    topic_id =:topic_id
ORDER BY
    date ASC

では、3 つのテーブルから選択する簡単な方法はありますか? それとも、私がやっていることは大丈夫で、どこかでエラーを起こしたのでしょうか? 前もって感謝します

4

2 に答える 2

0

WHERE節は必要ありません。

:そして、最後の ON 句は、等号演算子ではなく、単純に等号演算子を使用する必要があると思います=

そこでは、次のようになります。

SELECT 
  posts.id AS post_id, 
  topic_id,
  date, 
  text, 
  username AS user,
  users.id AS user_id,
  topics.title AS title
FROM 
  posts 
INNER JOIN 
  users 
ON
  posts.user_id = users.id
INNER JOIN
  topics
ON
  topics.id = topic_id
ORDER BY
  date ASC
于 2013-10-26T10:04:03.423 に答える
0

2 番目の JOIN 句を修正する必要がありました。トピック テーブルの 1 行のみを使用する予定の場合、3 つのテーブルすべてを結合することは最も効果的な方法ではない可能性があることを付け加えておきます。

SELECT 
    posts.id AS post_id, 
    topic_id,
    date, 
    text, 
    username AS user,
    users.id AS user_id,
    topics.title AS title
FROM 
    posts 
INNER JOIN 
    users 
ON
    posts.user_id = users.id
INNER JOIN
    topics
ON
    topics.id =posts.topic_id
WHERE 
    topics.id =:topic_id
ORDER BY
    date ASC
于 2013-10-26T10:03:19.310 に答える