0

ユーザーを含むテーブルと、ユーザー テーブルの ID に関連するイベントを含むテーブルがあります。各イベントでポイントを獲得できます。特定のユーザーから合計ポイントを取得したいと考えています。

次のようになります。

Users
+----+----------+
| id | username |
+----+----------+

Events

+----------+---------+--------+
| event_id | user_id | points |
+----------+---------+--------+

// event_id は、イベントに関する特定のデータを含むイベント テーブルに関連付けられています。しかし、それは関係ありません。

最善の方法は、ユーザーからデータを取得し、1 回のクエリで獲得した合計ポイントを取得することです。

ありがとう、モッテンマン

4

2 に答える 2

1

" ..ユーザーからデータを取得し、1 回のクエリで獲得した合計ポイントを取得します。 "

データを操作できるように、最初に両方のテーブルを結合する必要があります。以下のクエリではINNER JOIN、 に一致するレコードが少なくとも 1 つある場合にのみ、結果リストにユーザーを含めますEvents。他のテーブルに一致するレコードが 1 つもない場合でも、すべてのユーザーを取得する場合は、LEFT JOIN代わりに使用します。

SELECT  a.ID, a.username, SUM(b.points) totalPoints
FROM    Users a
        INNER JOIN Events b
            ON a.ID = b.user_ID
GROUP   BY a.ID, a.username

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

于 2013-05-05T16:20:00.880 に答える
1

「各イベントでポイントを獲得できます。特定のユーザーから合計ポイントを獲得したいです。」

次のようなことができます。

select sum(e.points) as points from users u
left join events e ON (u.id = e.user_id)
WHERE u.id = {$id}

{$id}ユーザーのIDはどこにありますか。

于 2013-05-05T16:23:30.647 に答える