2017-04-12 1 views
0

私はテーブルを持っています:投稿&投票 私はテーブル '投稿'テーブルの投稿数を 'votes'テーブルの列数で並べ替えるとします。あるテーブルから選択したデータを他のテーブルのデータに従ってソートする方法はありますか?

SELECT * FROM post ORDER BY <SELECT count(*) as c FROM votes WHERE post = $row[srno]> 

'votes'テーブルには、postとuserの2つの列があります。これは、「投稿」テーブルに存在する各投稿の投票を格納するためのものです。

SELECT count(*) as c FROM votes WHERE post = $row[srno] 

上記のクエリは私にnoを与えます。指定された投稿の投票数。この数だけ投稿を並べ替えるにはどうすればいいですか?

+0

あなたは '$行[srno]'で何を意味するのですか? –

+0

@WillemVanOnsem投稿のID ... srnoはテーブル '投稿'の列です。 – user7704928

答えて

0

たぶん、あなたはすべて、一つのテーブルから票を持つことができます。

SELECT COUNT(post) as c, post 
FROM votes 
GROUP BY Country 
ORDER BY post ASC; 
+0

"*この件数ではどのように投稿を並べ替えるのですか?*"ここでは投稿を*ソートしません。 –

0

あなたはそのためJOINを使用することができます。

SELECT p.*, COUNT(*) as vcount 
FROM post p 
JOIN votes v ON v.post = p.srno GROUP BY p.* ORDER BY vcount

これも含まれている表に列vcountが追加されます投票数。このクエリは、に最初の投票の昇順ので最低数を並べ替えられますことを

注意。あなたは降順にソートするDESCを使用することができます(投票のよう最高数を最初):

SELECT p.*, COUNT(*) as vcount 
FROM post p 
JOIN votes v ON v.post = p.srno 
GROUP BY p.* 
ORDER BY vcount DESC
関連する問題