1

PHP MySQLの初心者向けの質問があります。テーブル、メンバー、メッセージが2つあります。

テーブル'メンバー'

+-----------+------+
| MEMBER_ID | NAME |
+-----------+------+
|         1 | Bob  |
|         2 | Ted  |
|         3 | Tom  |
+-----------+------+

表'メッセージ'

+----+------------+--------------+--------------------+
| ID | SENDERS_ID | RECEIVERS_ID |      MESSAGE       |
+----+------------+--------------+--------------------+
|  1 |          1 |            3 | Hello Tom from Bob |
|  2 |          2 |            3 | Hello Tom from Ted |
|  3 |          2 |            1 | Hello Bob from Ted |
+----+------------+--------------+--------------------+

トムがmembers.member_idのみを使用できるようにして、次のように送信者の名前とともにすべてのメッセージを取得できるクエリを作成したいと思います。

+------+--------------------+
| name |      message       |
+------+--------------------+
| Bob  | Hello Tom from Bob |
| Ted  | Hello Tom from Ted |
+------+--------------------+

結合の例をいくつか読みましたが、それらをMySQLステートメントに実装する方法を知っています。

トムのmember_idは簡単に取得できますが、さらに先に進む方法がわかりません。また、結果を配列で返したいと思います。

  public function getMessages($member_id) {

  $result = mysql_query("SELECT member_id FROM members WHERE member_id = '$member_id'") or die(mysql_error());
    $no_of_rows = mysql_num_rows($result);
    if ($no_of_rows > 0) {
        $result = mysql_fetch_array($result); 
        $receivers_id = $result['member_id'];
        .
        // What can I do here to get the $result that I want?
        .
    }
    $no_of_rows = mysql_num_rows($result);
    if ($no_of_rows > 0) {
        $results = array();
        while(list($results) = mysql_fetch_array($result)) {
            array_push($results, $result);
        } 
        return $results;
    }
}       

どんな助けでも大歓迎です、

ありがとう

4

1 に答える 1

3
SELECT  c.name,
        b.message
FROM    members a
        INNER JOIN  messages b
            ON a.member_ID = b.receivers_id
        INNER JOIN members c
            ON b.senders_ID = c.member_ID
WHERE   a.name = 'Tom'
于 2012-11-26T03:04:17.133 に答える