1

名前とIDを取得するためにmembersテーブルから2行を選択する必要があり、メッセージテーブルからすべての行を取得する必要があります。これが私がこれまでに持っているものですどんなヒントや助けもありがたいです表を編集する

メンバー msgs

 SELECT member_messages.message_to, 
       member_messages.message_from, 
       member_messages.message_time, 
       member_messages.message_body,
       members.display_name,members.id 
FROM members
INNER JOIN member_messages 
   ON member_messages.message_to = members.id  AS 'to'
INNER JOIN member_messages 
   ON member_messages.message_from = members.id AS 'from'
WHERE member_messages.message_to = '$userId'
4

2 に答える 2

1

結合はほぼ正しいですが、直接参照するのではなく、リストのsで割り当てたテーブルエイリアスtoを参照する必要があります。とは両方ともMySQLの予約キーワードであるため、両方をバッククォートする必要があります。fromJOINSELECTmembersTOFROM

SELECT member_messages.message_to, 
       member_messages.message_from, 
       member_messages.message_time, 
       member_messages.message_body,
       /* Select cols from both aliases of members, with column aliases */
       `to.display_name AS to_name,
       `to`.id AS to_id ,
       `from`.display_name AS from_name,
       `from`.id AS from_id 
/* First reference to members as `to` */
FROM members AS `to`
INNER JOIN member_messages 
   ON member_messages.message_to = `to`.id
/* Second reference to members as `from` */
INNER JOIN members AS `from` 
   ON member_messages.message_from = `from`.id
WHERE member_messages.message_to = '$userId'
于 2013-01-10T00:41:18.147 に答える
0

ここにdb構造を配置すると便利です。テーブル'member_messages'に読みたいすべてのメッセージが含まれているとすると、これを'members'テーブルと2回結合して、'from'および'to'メンバーの名前を取得する必要があります。

あなたはおそらくこのようなものを探しています:

SELECT
    message.message_time, message.message_body,
    member_to.id, member_to.display_name,
    member_from.id, member_from.display_name
FROM   
    member_messages AS message
JOIN   
    members AS member_to ON members.id = member_messages.message_to 
JOIN   
    members AS member_from ON members.id = members_messages.message_from

一部の単語がdbシステムで予約されている場合は、それらを変更します。

于 2013-01-10T00:13:52.780 に答える