0

すべて、mySQLに次のSelectステートメントがあるとします。

$qry = "Select filename from upload where file_id='$file_id'";
$result = mysql_query($qry);
$resultset = mysql_fetch_array($result);

そのクエリは正常に機能しますが、同じファイル名が同じステートメントのそのテーブルの別の場所に表示される回数のカウントを含めることもできます。そのため、このファイル名を取得する代わりに、mySQLステートメントを1回実行するだけで済みます。結果を取得してから、次のような別のクエリを実行します。

$qrycheck = "Select COUNT(filename) from upload where filename='$resultset[filename]'";

とにかく、単一のmySQLステートメントでこのチェックを行うことはできますか?

ありがとう!

4

5 に答える 5

2
SELECT COUNT(filename) AS filenameOccurences, filename FROM upload WHERE filename = '$resultset[filename]' GROUP BY filename;
于 2012-07-10T17:37:44.293 に答える
0
SELECT u.filename, c.cnt
FROM upload AS u
INNER JOIN 
(
    SELECT COUNT(*) AS cnt, uu.filename 
    FROM upload AS uu
    GROUP BY uu.filename
) AS c ON u.filename = c.filename
WHERE u.file_id = '$file_id'
于 2012-07-10T17:43:38.037 に答える
0

自己参加はあなたの友達です。

$qry = "SELECT DISTINCT filename, a
    FROM (SELECT count(filename) AS a, file_id FROM upload GROUP BY file_id) AS x
    JOIN upload ON upload.file_id = x.file_id
    WHERE upload.file_id = '$file_id'";

は、同じファイル名が複数回表示されるのを防ぐのDISTINCTに役立ちます(ただし、最初の行だけを取得している場合は、実際には問題ではありません)。

于 2012-07-10T17:43:58.347 に答える
0

私が正しく理解していれば、file_idが異なる'filename'のインスタンスがいくつかあります(file_idは一意のIDであると思われるため、file_idの出現をカウントすることは意味がありません。1または0を取得します)。

  file_id  filename
  1        filename1.jpg
  2        filename2.jpg
  3        filename1.jpg
  4        filename1.jpg

その場合は、自分自身でアップロードに参加する必要があります。

  SELECT uploads.filename, count(names.instance) AS instances FROM upload AS uploads
       JOIN upload AS names ON (uploads.filename = names.filename)
       WHERE uploads.file_id = '$file_id' GROUP BY uploads.filename;

これにより、$resultset['filename']の名前と$resultset['instances']のインスタンスの数が返されます。

于 2012-07-10T17:46:55.433 に答える
0

それはあなたを助けるかもしれません

SELECT COUNT( * ) AS  `Cnt` ,  `filename` 
FROM  `upload` 
GROUP BY  `filename`
limit 10;

そしてあなたは多分それをしたい

SELECT filename, count(*) as cnt 
from upload 
where file_id='###my_file_id###' 
group by filename;

あなたはグーグルで検索することができます'mysqlgroup by'

于 2012-07-10T17:50:56.050 に答える