0

私はこのデータベースを持っています:

Image : id,user_id,[..],created_at
Visit : id,image_id,created_at
user : id,[..]

そして、上位のアップローダ ユーザーを取得するためのクエリがあります。

$current_month = date('Y-m-d', strtotime("first day of this month")) . ' 23:59:59';
$users = DB::query("SELECT * ,
      COUNT(p.id) as numPics
    FROM
      images p 
    INNER JOIN
      users u
    ON
     p.user_id = u.id
   WHERE 
     p.created_at >= \"$current_month\"
   GROUP BY p.user_id
   ORDER BY numPics DESC LIMIT 10");

私が持っているのは、現在の月の各画像の合計ビストを取得できるように、訪問テーブルに参加することです.

4

2 に答える 2

0

訪問テーブルに image_id フィールドがあると仮定します。

SELECT * ,
  COUNT(p.id) as numPics
FROM
  images p 
INNER JOIN
  users u
ON
  p.user_id = u.id

    INNER JOIN visits as v ON v.image_id = p.id

 WHERE 
 p.created_at >= \"$current_month\"
GROUP BY p.user_id
ORDER BY numPics DESC LIMIT 10"
于 2013-05-06T17:00:36.440 に答える
0

訪問テーブルの構造を知らなければ、具体的な詳細を示すことはできませんが、 for usersJOINの後に visit 句を追加できるはずです。JOIN

SELECT *, COUNT(p.id) as numPics, COUNT(v.id) as numVisits
FROM images p 
INNER JOIN users u ON p.user_id = u.id
LEFT JOIN visits v ON v.image_id = p.id AND v.created_at >= "$current_month"
WHERE p.created_at >= "$current_month"
GROUP BY p.user_id
ORDER BY numPics DESC LIMIT 10
于 2013-05-06T16:58:55.600 に答える