を返ささえせずに()COUNTを取得: - 友人の数が を要求 - 新しいプライベートメッセージの数 - 通知の数を - ユーザーのユーザー名など。 PMをあなたに送ったり、友人にあなたを招待したりしました。は、データが、私はちょうど1つのクエリでデータベースからいくつかの事取得しようとしています
以下のクエリで指定されたユーザーIDは、このユーザーに対して通知があるかどうかを確認するユーザーです。
通知がない場合、フレンドリクエストまたはプライベートメッセージの数も返されません。
これは私が構築しているクエリであり、それは上記の問題とは別に動作します。誰もが自分のSQLの知識を共有し、私を私を助けることができますので、もし私が、私が行方不明です何かわからない
SELECT
n.id,
n.type,
u.username,
COUNT(fr.friend_id) as frc,
COUNT(pm.pm_id) as pmc
FROM
notifications as n,
users as u
LEFT JOIN
private_messages as pm
ON
pm.to_user = '1'
AND
pm.status = 'unread'
LEFT JOIN
friends as fr
ON
fr.friend_id = '1'
AND
fr.status = 'pending'
WHERE
n.user_id='1'
AND
u.id = n.from_id
ORDER BY
n.id ASC
それを深く感謝するでしょう。
ありがとうございます!
ps。私はまだ非常に複雑なクエリには新しくなっていますので、上記のクエリで完全にオフになっている場合はお知らせください:)。
表構造:おそらくによって
Sample friends table structure
+--------------------------+-----------------------------+
| Field | Type |
+--------------------------+-----------------------------+
| user_id | int(10) |
| friend_id | int(10) |
| status | ENUM('pending','accepted') |
| user_id | int(10) |
+--------------------------+-----------------------------+
Sample notifications table structure
+--------------------------+---------------------+
| Field | Type |
+--------------------------+---------------------+
| id | int(10) |
| type | ENUM('pm','friend') |
| user_id | int(10) |
| from_id | int(10) |
+--------------------------+---------------------+
Sample private message table structure
+--------------------------+-----------------------+
| Field | Type |
+--------------------------+-----------------------+
| pm_id | int(12) |
| to_user | int(10) |
| from_user | int(10) |
| status | ENUM('read','unread') |
+--------------------------+-----------------------+
Sample users table structure
+--------------------------+---------------+
| Field | Type |
+--------------------------+---------------+
| id | int(10) |
| username | varchar(50) |
+--------------------------+---------------+
は、あなたが "UNION SELECT" を試したことがありますか? –
私はそれが何であるかわからないので、私はないと言うことはできません。 :( – MrE
テーブル構造を投稿すると、クエリに使用しているものすべてが必ずしもすべての列である必要はありません。 –