私は4つのテーブルを持っています
- ユーザー
- ピクチャー
- メッセージ
- 友達リクエスト
1 つのクエリで友達リクエストと新しいメッセージを取得しようとしています。うまく機能しますが、「friendsreuqests」に参加したままにすると、複数の行が表示されます。
これが私のクエリです:
SELECT username,
f1.userid as reqId,
m1.msg, m1.userid,
p1.picHash, p1.extension, UNIX_TIMESTAMP( m1.sent ) AS date
FROM users
LEFT JOIN pictures p1 ON p1.userid = users.id
LEFT JOIN messages m1 ON m1.contactid = users.id AND m1.delivered =0
LEFT JOIN friendrequests f1 ON f1.contactid = users.id AND f1.delivered=0 AND f1.request =1
WHERE users.id =7
ORDER BY date ASC
これは MySQL の結果です。
Kungen 3 gregegerg 1 dc825b1c8a35593be4d172db7 jpg 1369839537
Kungen 12 gregegerg 1 dc825b1c8a35593be4d172db7 jpg 1369839537
Kungen 3 HEJH 1 dc825b1c8a35593be4d172db7 jpg 1369839540
Kungen 12 HEJH 1 dc825b1c8a35593be4d172db7 jpg 1369839540
ご覧のとおり、結果は 2 倍になります。この時点で2行だけ取得したい。2 つの新しいメッセージがあり、新しい友達のリクエストがない場合、それらの 2 行は NULL である必要があります。