私は2つのテーブルを持っています。(MySQL データベース) イベント:
id | title | ...
Event_participate:
event_id | user_id | confirmed
confirmed
0/1 列です。指定したユーザーが参加しているイベントを探したい。私のSQLクエリは次のとおりです。
SELECT *, COALESCE(SUM(ep.confirmed), 0) AS count_members
FROM event e
LEFT JOIN event_participate ep ON e.id = ep.event_id
GROUP BY ep.event_id
HAVING (
ep.user_id = 6
)
このクエリを拡張したいので、having clasule を使用する必要があります。私は5つのイベントの結果を持っていますが、これを照会すると:
SELECT *
FROM `event_participate`
WHERE `user_id` = 6
私は7つのレコードを持っています。そんなことがあるものか?
2 番目のテーブル (event_participate) の構造を編集しました。これは、 having
clausule を使用する理由を理解するのに役立ちます。使用するWHERE
と、count_members で常に 1 になります。
編集:私の目的は、特定のユーザーが参加するイベントを取得することです。これらのイベントに既に参加しているユーザーの数を知りたいです。
例: user id=6 は id=1 の 1 つのイベントに参加します。しかし、イベント id=1 に参加しているユーザーは他に 3 人います。したがって、1 つのイベントを取得し、列 count_members で取得する必要があります4
。