1

これは、経験豊富な Sql ユーザーにとって非常に簡単だと思います。

次の表が与えられます。

テーブル ユーザー

   id  Name
   1 | Stephan
   2 | Marion
   3 | Jonathan
   4 | Morgan

テーブル メッセージ

  id| sender | reveiver | message
   1|    2   |     4    | "hello world!"

以下を取得するためのリクエストをどのように行いますか(1つのSQLリクエストのみで):

 id| sender | reveiver | message        | sender.username | receiver.username
  1|    2   |     4    | "hello world!" |       Marion    |        Morgan

どうもありがとう!

4

4 に答える 4

2

試す

select m.id, sender, receiver, message, sender.name, receiver.name
from messages m
left outer join users sender on sender.id = m.sender
left outer join users receiver on receiver.id = m.receiver
于 2012-07-24T13:36:28.993 に答える
1
SELECT
    m.id
    , m.sender
    , m.receiver
    , m.message
    , s.name
    , r.name
FROM
    messages m
    , INNER JOIN names s ON (s.id = m.sender)
    , INNER JOIN names r ON (r.id = m.receiver)
于 2012-07-24T13:37:37.067 に答える
1
    select
        m.id
    ,  m.sender
    ,  m.receiver
    ,  m.message
    ,  su.user
    ,  ru.user
    from message m
    join user su on (su.id = m.sender)
    join user ru on (ru.id = m.receiver)

もっと効率的な方法があると思いますが、これがおそらく最も簡単です。

于 2012-07-24T13:39:07.683 に答える
1
select m.id, sender, reveiver, message,
  sender.Name as sender_username, receiver.Name as receiver_username
from messages m
inner join users sender on sender.id = m.sender
inner join users receiver on receiver.id = m.reveiver
于 2012-07-24T13:50:05.750 に答える