0

私は大学のプロジェクトのために小さなメッセージシステムを作成しようとしています。すべてのメッセージが1つのテーブルに格納され、ユーザーに関連するデータが別のテーブルにあるという点で。ここで、最初にメッセージの範囲を選択してから、選択した範囲に関連する対応するユーザー名を見つけたいと思います。そして最後に、それらのデータを配列に入れます。

メッセージテーブル

Message_id | Sender_id | Receiver_id | Title    | Message
1          | 45        | 20          | Testing  | Hello
2          | 10        | 20          | Testing2 | Hi

ユーザーテーブル

User_id    | First_name  | Last_name | Email | Password
10         | David       | Chang     |dd@bb  | asddsf
.
.
20         | Denis       | Peter     |ff@dd  | sdfsd
.
45         | Night       | Hero      |gg@ll  | asdsa

ここで、すべてのデータをこのような配列に入れたいと思います。

Message_id=>1
Sender=>David
Receiver=>Denis
Title=>Testing
Message=>Hello

どうすればこれを達成できますか?

4

4 に答える 4

2

あなたのデータの場合、クエリは次のようになります

 $qry = 'SELECT Message_id, a.First_name as Sender, b.First_Name as Receiver, Title, Message
         FROM Message m
         JOIN User a on a.user_id = m.sender_id
         JOIN User b on b.user_id = m.received_id
         WHERE m.Message_id = 1';

$result = mysql_query($qry)

結果のデータは、要件のような配列になります。

于 2013-01-27T09:36:49.447 に答える
2

試してみる質問の SQL 部分は次のとおりです。

クエリ:

select m.message_id, u.First_Name as Receiver, 
s.First_Name as Sender, m.Title, m.Message
from User u
inner join Message m
on m.receiver_id = u.user_id
inner join User s
on m.sender_id = s.user_id
where m.message_id = 1 //-- your condition
group by m.message_id
;

質問のサンプルデータに基づく結果:

| MESSAGE_ID | RECEIVER | SENDER |   TITLE | MESSAGE |
------------------------------------------------------
|          1 |    Denis |  Night | Testing |   Hello |

MYSQLでは、同じものJOININNER JOIN指します。user テーブルを 2 回使用する必要がある理由は、レシーバーとセンサーの両方が user テーブルのユーザーであるためです。つまり、対応する名に適切な列エイリアスを追加する必要があります:)

于 2013-01-27T09:36:52.753 に答える
1
SELECT 
  m.message_id, m.title, m.message, 
  u.first_name AS sender, u2.first_name AS receiver
FROM message AS m 
INNER JOIN user AS u ON u.user_id = m.sender_id 
INNER JOIN user AS u2 on u2.user_id = m.receiver_id
于 2013-01-27T09:36:41.397 に答える
1

次のように、SQL クエリで JOIN を使用する必要があります。

SELECT msg.Message_id, sender.First_name, receiver.First_name, msg.Title, msg.Message
FROM table_one as msg
JOIN table_two AS sender ON msg.Sender_id = sender.User_id
JOIN table_two AS receiver ON msg.Receiver_id = receiver.User_id

上記のステートメントはテストされていません。問題がある場合はコメントしてください。

于 2013-01-27T09:36:59.540 に答える