0

純粋な mySQL をしばらく使用していなかったので、忘れていたようです。悲しい話。これで、画像と投票の 2 つのテーブルができました。画像には、とりわけ一意の ID があります。投票テーブルには、イメージ ID とユーザー ID の 2 つのフィールドしかありません。

投票数順に並べられた画像のリストを取得しようとしていますが、ここで立ち往生しています。私が得た最も近いものはこれです:

SELECT i.uname AS author, i.title, i.time, i.description, i.id, i.extension, v.uid
FROM images as i
LEFT JOIN
votes as v ON i.id = v.iid

これは、投票者 ID を持つすべての画像を返します。画像に複数の投票がある場合、複数回返されます。

誰かがこのクエリで私を助けてくれますか?

4

2 に答える 2

5

とを使用する必要がありCOUNTますGROUP BY

SELECT i.uname AS author, i.title, i.time, i.description, i.id, i.extension, COUNT(v.uid)
FROM images as i
    LEFT JOIN votes as v ON i.id = v.iid
GROUP BY i.uname, i.title, i.time, i.description, i.id, i.extension
ORDER BY Count(v.uid) DESC

示唆されているように、MySQL のすべての出力フィールドを使用する必要はありませんGROUP BY。一意の識別子 (この場合は i.id) を使用するだけです。

于 2013-02-14T12:30:59.327 に答える
0

試す:

SELECT i.uname AS author, i.title, i.time, i.description, i.id, i.extension, count(*) votes
FROM images as i
LEFT JOIN votes as v ON i.id = v.iid
group by i.id
order by 7

(最低から​​最高へ -descorder by 7に追加して、並べ替え順序を最高から最低へと変更します。)

于 2013-02-14T12:31:53.203 に答える