2017-10-03 9 views
2

私のウェブサイトは、人々がアップホートとダウンボートを行うことができる画像(メディア)のリストを表示します。私は最も最近にアップされた最近の画像をリストアップできるようにしたいと思います。ここ ORDERの2つの変数によるクエリ:sum()と日付

は私の2つのテーブルです:

MEDIAS

+----+----------+-------+---------------------+ 
| id | media_id | value |  date   | 
+----+----------+-------+---------------------+ 
| 1 |  1 |  1 | 2017-10-03 09:27:19 | 
| 2 |  1 | -1 | 2017-10-03 03:27:19 | 
| 3 |  2 |  1 | 2017-10-03 02:27:19 | 
+----+----------+-------+---------------------+ 

は、これまでのところ、私が最もupvotedでマスコミを一覧表示することができるよ

+----+-------+-----------+---------------------+ 
| id | name | url |  date   | 
+----+-------+-----------+---------------------+ 
| 1 | koala | koala.jpg | 2017-10-03 09:27:19 | 
| 2 | ... | ...  | 2017-10-02 09:27:01 | 
| 3 | ... | ...  | 2017-10-01 09:25:23 | 
+----+-------+-----------+---------------------+ 

票が、私は見つけることができませんmediasテーブルに参加し、注文するのにmedias.dateを使用する方法。

$q = $db->query('SELECT media_id,SUM(value) AS trend FROM votes GROUP BY media_id ORDER BY trend DESC'); 

while($data = $q->fetch()) 
{ 
    echo $data['media_id'].'<br>'; 
} 

編集:最初のクエリに加えてmedias.dateで自分のメディアを注文したいと思います。

+1

は、あなたがテーブルを結合しようとしたことがあり、クエリを使用しますか? – jeroen

+0

どの日付までに注文しますか?あなたはグループ化しています。グループごとに1つ以上の日付があります。 – sagi

+0

@sagi文脈から私はそれがそうでなければ参加する必要はないだろうとmediasの日付だと仮定しています。 – apokryfos

答えて

2

テーブルを結合することができます。

SELECT m.id,SUM(v.value) AS trend 
FROM media m 
    JOIN votes v 
    ON m.id=v.media_id 
GROUP BY m.id 
ORDER BY trend DESC, m.date DESC 

チェックフィドル:http://sqlfiddle.com/#!9/da4455/1/0

2

ちょうどJOIN両方のテーブル。

例:

SELECT rating.trend, medias.date, medias.id 
FROM (SELECT media_id, SUM(value) AS trend FROM votes GROUP BY media_id) AS rating 
INNER JOIN medias ON medias.id = rating.media_id 
ORDER BY rating.trend DESC, medias.date DESC 

また、あなたがmediasテーブルからnameurl列を追加することができます。

関連する問題