私は2つのテーブルを持っています:
ポイント->
id bigint(20) NO PRI NULL auto_increment
created_at datetime NO NULL
ip varchar(255) NO NULL
item_id bigint(20) NO MUL NULL
updated_at timestamp YES NULL
およびアイテム->
id bigint(20) NO PRI NULL auto_increment
author varchar(255) NO NULL
created_at datetime NO NULL
description varchar(255) NO NULL
link varchar(255) NO NULL
source varchar(255) NO NULL
title varchar(180) NO NULL
url_encoded varchar(255) NO UNI NULL
updated_at timestamp YES NULL
うまくいけば、1つのクエリに参加させて、item.*
それらに関連するポイントの合計を取得します。また、過去24時間にポイントが作成されたアイテムに対してのみこれを実行したいと思います。
これはこれまでの私の質問です:
SELECT `items`.*, COUNT(points.item_id) as points
FROM `items`
INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE `points`.`created_at` > '2013-03-16 16:00:14'
ORDER BY points DESC
LIMIT 30;
残念ながら、2行になると1行になり、1行になると2ポイントになります。私のデータベースには、2つのアイテムとそれぞれに1つのポイントがあります。これを修正し、両方の結果を取得するためにクエリを改善する方法を理解するのを手伝ってください。