0

私は2つのテーブルを持っています。それらの1つに名前が付けられfiles、すべてのファイルのすべてのリストがあります。と呼ばれる 2 番目のテーブルpaymentsには、いくつかのファイルの支払いのリストがあります。

支払い:

id | fileid | {...}
 1   2
 2   3
 3   2

ファイル:

id | {...}
1
2
3

すべてのファイルを選択し、テーブルpaymentsを結合して、このテーブルの数で並べ替えたいと思います。

paymentsこの場合、最初の行はファイル #2 になります。これは、テーブル内で最も繰り返されるためです。

私はそれをやろうとしましたが、それを行うと、すべての行が表示されるわけではありません!

paymentsすべてのファイルがテーブルにあるわけではないために発生すると思います。なのでこの場合、1行目は表示されないと思います。

ありがとう、そして私の英語でごめんなさい

PS: mysql エンジンを使用しています

**更新**私のコード:

            SELECT      `id`,`name`,`size`,`downloads`,`upload_date`,`server_ip`,COUNT(`uploadid`) AS numProfits
            FROM        `uploads` 
            JOIN        `profits`
            ON          `uploads`.`id` = `profits`.`uploadid`
            WHERE       `uploads`.`userid` = 1
            AND         `removed` = 0
            ORDER BY    numProfits
4

3 に答える 3

0

これを試して:

select B.fileid,A.{}.....
from
(select id,.....
from files A
inner join
(select count(*),fileid,.....
from payments
group by fileid) B
on files.id=payments.fileid)

これが役立つことを願っています。ファイル テーブル内のすべての ID が一意であると想定しています。この回答では、必要に応じて order by 句を適用できます。フェッチしたいデータを選択するための select ステートメントを残しました。

あなたの問題が説明されている限り、これはうまくいくはずです。問題がある場合は、コメントを投稿してください。

于 2013-08-29T14:07:05.193 に答える