2

次のSQLステートメントを使用しています。

SELECT reply.id, reply.content, author.username
FROM thread, reply, author
JOIN thread_reply ON thread.id = thread_reply.thread_id
JOIN reply ON thread_reply.reply_id = reply.id
JOIN author_reply ON thread.id = author_reply.thread_id
JOIN author ON author_reply.author_id = author.id
WHERE thread.id = '40'

私は次のテーブルを持っています:

thread_reply: thread_id, reply_id

reply: id, content, created (timestamp)

author: id, username, password_hash, salt #etc

thread: id, content, created

author_reply: author_id, reply_id

次のエラーが発生し続けます。

#1066 - Not unique table/alias: 'reply'

ああ、私はMySQLを使用しています。

4

5 に答える 5

3

元のクエリのとCROSS JOINの間threadに暗黙の値があり、エイリアスを作成せずに同じテーブルを2回目に結合しました。authorreply

これを使って:

SELECT  reply.id, reply.content, author.username
FROM    thread t
JOIN    thread_reply tr
ON      tr.thread_id = t.id
JOIN    reply r
ON      r.id = tr.reply_id
JOIN    author_reply ar
ON      ar.reply_id = r.id
JOIN    author a
ON      a.id = ar.author_id
WHERE   thread.id = '40'
于 2011-04-01T14:17:26.097 に答える
1
SELECT reply.id, reply.content, author.username
FROM thread
INNER JOIN thread_reply ON thread.id = thread_reply.thread_id
INNER JOIN reply ON thread_reply.reply_id = reply.id
INNER JOIN author_reply ON thread.id = author_reply.thread_id
INNER JOIN author ON author_reply.author_id = author.id
WHERE thread.id = '40'
于 2011-04-01T14:17:24.057 に答える
1

あなたはFROM節にテーブルを含めて、それからそれらにも結合しています-私はあなたが単純FROM threadに、そしてあなたの結合が欲しいと思います。

于 2011-04-01T14:17:33.653 に答える
0

行にエラーが発生しました

JOIN author_reply ON thread.id = author_reply.thread_id

与えられた定義によると、author_replyテーブルにthread_idはありません。

于 2011-04-01T14:22:55.383 に答える
0

これは機能します:

SELECT reply.id, reply.content, author.username
FROM thread
JOIN thread_reply ON thread.id = thread_reply.thread_id
JOIN reply ON thread_reply.reply_id = reply.id
JOIN author_reply ON reply.id = author_reply.reply_id
JOIN author ON author_reply.author_id = author.id
WHERE thread.id = '40'
于 2011-04-01T14:31:55.020 に答える