プロジェクトの場合、特定の人が送信したすべてのメッセージを見つける必要があります。だから、私はこれらのテーブルを持っていると言います:
人
person_id | first_name | last_name
メッセージ
message_id | sender_id | receiver_id | message
sender_idとreceiver_idの両方がperson_idを参照します。送信者の姓名、受信者の姓名、およびメッセージを表示する必要があります。特に送信者の名前と受信者の名前を表示するのに問題があります。
私は自分の問題についてさまざまな検索を試みましたが、何も機能していないか、実際に私の問題に関連していないようです。いくつかのソリューションがUNIONを使用しているのを見てきましたが、クラスではまだそれを学びませんでした。これは私がこれまでに持っているものです:
SELECT p.first_name AS "Sender First Name",
p.last_name AS "Sender Last Name",
p.first_name AS "Reciever First Name",
p.last_name AS "Reciever Last Name",
m.message_id AS "Message ID",
m.message AS "Message",
m.send_datetime AS "Message Timestamp"
FROM message m, person p
WHERE m.sender_id = 1
AND m.sender_id = p.person_id;
それは私に与えます:
+-------------------+------------------+---------------------+--------------------+------------+--------------------------------------------+---------------------+
| Sender First Name | Sender Last Name | Reciever First Name | Reciever Last Name | Message ID | Message | Message Timestamp |
+-------------------+------------------+---------------------+--------------------+------------+--------------------------------------------+---------------------+
| Michael | Phelps | Michael | Phelps | 1 | Congrats on winning the 800m Freestyle! | 2016-12-25 09:00:00 |
| Michael | Phelps | Michael | Phelps | 4 | Thanks! You're the greatest sprinter ever | 2016-12-25 09:04:00 |
| Michael | Phelps | Michael | Phelps | 5 | Good luck on your race | 2016-12-25 09:05:00 |
+-------------------+------------------+---------------------+--------------------+------------+--------------------------------------------+---------------------+
したがって、送信者の名前は正しいですが、受信者の名前は正しくありません。最後の行をに変更すると
AND m.receiver_id = p.person_id;
次に、正しい受信者名を取得しますが、正しい送信者名は取得しません。
2つの結合が必要です。そしてそれはJOIN
!
SELECT ps.first_name AS "Sender First Name",
ps.last_name AS "Sender Last Name",
pr.first_name AS "Receiver First Name",
pr.last_name AS "Receiver Last Name",
m.message_id AS "Message ID",
m.message AS "Message",
m.send_datetime AS "Message Timestamp"
FROM message m JOIN
person ps
ON m.sender_id = ps.person_id JOIN
person pr
ON m.receiver_id = pr.person_id
WHERE m.sender_id = 1;
ノート:
FROM
。JOIN
構文を使用してください。FROM
。NULL
ある場合はLEFT JOIN
、の代わりにを使用しますJOIN
。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加