2012-01-25 3 views
0

私は2つのテーブルを持っています。動画付きワン(lol_videos):テーブルの行順は相対テーブルによって異なります

ID、タイトル、URL、...

とヒットテーブル(lol_hits):

ID、VIDEOID、タイムスタンプ

私は、並べ替えしたいと思いますヒット数(lol_hitsに格納されている)と特定のタイムスパンに応じて、動画テーブルの動画を再生できます。

私はいくつかの異なるものを試してみたが、私は本当に私は右...これまでのところ、私はいくつかの役に立たないMySQLのエラーを取得することはできません:(

$query = "SELECT `lol_videos`.*, COUNT(lol_hits.videoID) as hit_count". 
" FROM `lol_videos`". 
" WHERE published > $now AND pushed > 0". 
" LEFT JOIN `lol_hits`". 
" ON (`lol_hits`.videoID = `lol_videos`.ID)". 
" ORDER BY hit_count DESC"; 
$result = mysql_query($query) or die(mysql_error()); 

誰もがこの問題を解決するための方法を提案を得たか

答えて

1

これは動作するはずです:?

SELECT v.*, v2.numHits FROM (
    SELECT videoID, COUNT(ID) 'numHits' FROM lol_hits GROUP BY videoID 
) AS v2 
JOIN lol_videos v ON (v.ID = v2.videoID) 
ORDER BY v2.numHits DESC; 
+0

あなたの返事をありがとう。私はそれを働かせることはできません、何numHitsですか? – Christoffer

+0

編集したクエリを試してください.. "numHits"はサブクエリのCOUNT(ID)です。 –

+0

今回はエラーはありませんが、行はヒット順に並べられていません。ランダムであるようです。 – Christoffer

0

このような何か

SELECT * FROM lol_videos 
LEFT JOIN lol_hits 
ON lol_videos.ID = lol_hits.videoID 
ORDER BY lol_hits.hit_count DESC; 
+0

ご返信ありがとうございます。 私はそれを動作させることはできません..どこにhit_countが定義されていますか? – Christoffer

関連する問題