0

次の3つのテーブルがあります。

users:
id, username

folders:
id,fkuser(connects to user.id)

folder_comments:
id,fkuser(connects to user.id), fkfolder(connects to folder.id)

folder_comments.fkuser->user.id<->user.usernameコメント投稿者のusername( )ANDとフォルダ所有者のユーザー名(folder_comments.fkfolder->folder.id<->folder.fkuser->user.id<->user.username);を取得したい。

私が考えているクエリは部分的です:

SELECT `folder_comments`.*, `folder`.`fkuser` as folderuserid, `user`.`firstname` as username
FROM `folder_comments` 
                left join `folder` on `folder_comments`.`fkfolder` = `folder`.`id`
                left join `user` on `folder_comments`.`userid` = `user`.`id`

フォルダの所有者のユーザー名を取得するにはどうすればよいですか?

編集 :

私は試した:

    SELECT `folder_comments`.*, `folder`.`fkuser` as folderuserid, `user`.`firstname` as username, , `user`.`firstname` as folderowner
        FROM `folder_comments` 
                        left join `folder` on `folder_comments`.`fkfolder` = `folder`.`id`
                        left join `user` on `folder_comments`.`userid` = `user`.`id`
left join `user` on `folder`.`fkuser` = `user`.`id`

しかし、エラーが発生しますNot unique table/alias: 'user'

4

2 に答える 2

1

次のように、userを複数回結合に使用します。

select folder.*, userfolder.username, comment.*, usercomment.username
  from folders folder inner join
  user userfolder on folder.fkuser = userfolder.id inner join
  comments comment on comment.fkfolder = folder.id inner join
  user usercomment on comment.fkuser = usercomment.id

結合で同じテーブルを複数回使用する場合は、異なるエイリアスを使用することが重要です

于 2012-10-09T15:22:21.087 に答える
1

スキーマのどこにあるのかわからない

しかし、あなたはこのようにします。これは人々からママとパパの名前を取得することです

Select Child.Name,Mothers.Name, Father's.Name
From Child
Inner Join People Mothers On Child.MotherID = Mothers.PersonID
Inner Join People Fathers On Child.FatherID = Fathers.PersonID

したがって、必要な回数だけテーブルに参加しますが、それぞれに異なるエイリアスを付けます。

于 2012-10-09T15:20:03.083 に答える