2017-01-10 8 views
0

データベースに追加された製品を表示するページを作成しようとしています。file_nameを含むテーブルの行数をカウントする

すべての商品を自動的に表示するには 'foreach'を使用する必要があります。

私は各製品のダウンロード数を表示する必要がある1つの部分でつかまっています。これを行う唯一の方法は、ダウンロード表の製品のファイル名を含む行の数を数えることです。

これは私がこれまでに使用するものですが、そのは動作していない:[製品、file_product、ファイル、ダウンロード]

Table: products

Table: file_product

SELECT * FROM products, file_product, files, downloads WHERE products.id = file_product.product_id AND file_product.file_id = files.id AND files.file_name = downloads.file_name 

は、これらは私のテーブルです

Table: files

Table: downloads

答えて

0

あなたが書く必要があります:

SELECT `file_name'`, COUNT(*) AS `count` FROM table GROUP BY `count` ORDER BY `count` DESC; 

その後、descroissant順序によって各file_nameのグループのために、このコマンドが返す行数をテーブルごと。

PHP whith実装するために:

<?php 
// connect to MySQL 
$db = mysql_connect('localhost', 'login', 'password'); 

// select database 
mysql_select_db('database_name',$db); 

// SQL query 
$sql = 'SELECT `file_name`, COUNT(*) AS `count` FROM table GROUP BY `count` ORDER BY `count` DESC;'; 


$req = mysql_query($sql) or die('Error SQL !<br>'.$sql.'<br>'.mysql_error()); 

// close mysql 
mysql_close(); 
?> 

私はそれをテストすることはできませんので、それは多分偽です:/

+0

お返事ありがとうございます!どのように私はPHPでこれを実装して、各製品の数を単にエコーすることができますか? – rohanmcdermott

+0

@rohanmcdermott、それは誰かがあなたのためにこれを書くことを望むようにひどく鳴っている。これはスタックオーバーフローの精神に反します。クエリがどのように表示されるかについての回答を受け取りました。 – Crashspeeder

+0

@ Crashspeeder私たちは人々を助け、時には私たちはフィードバックを得ません^^うまくいけばrohanmcdermottはSOの哲学を理解しています;) – Deadpool

1

あなたがこれに苦労してやっているようですが、私に聞こえます。 mysqlのグループ化関数、特にGROUP BYを見ることをお勧めします。クエリだけをループする必要はなく、結果だけをループする必要があります。

何か

SELECT `file_name`, COUNT(*) AS `count` FROM `files` GROUP BY `file_name`; 

ような結果は次のようになります。

--------------------------- 
| file_name  | count| 
--------------------------| 
| background-2.png | 2 | 
| foo.png   | 1 | 
--------------------------- 

あなた、あなたのfile_productテーブルでは、現在の製品のファイルのみに制限する必要がある場合JOINことができ、私が書いたものはすべての製品のすべてのファイルを提供します。

例:あなたは、現在の製品のプロダクトIDを置く場所

SELECT 
    f.`file_name`, 
    COUNT(*) AS `count` 
FROM `files` f 
JOIN `file_product` fp 
    ON fp.`file_id` = f.`id` 
JOIN `product` p 
    ON fp.`product_id` = ? 
JOIN `downloads` d 
    ON d.`file_name` = f.`file_name` 
GROUP BY `file_name`; 

?です。

+0

速い返答をありがとう!どのように私はPHPでこれを実装して、各製品の数を単にエコーすることができますか? – rohanmcdermott

+0

@rohanmcdermott:それは簡単な答えではありません。私は、あなたがあなたのデータベース接続をどのように開いて、問い合わせているのか分かりません。フレームワークを使用している場合は、フレームワークの規約を使用する必要があります。 PHPを使用している場合は、PDOまたはmysqliを使用してデータベース接続を開いておく必要があります。このページの「例」セクションをご覧ください:http://us1.php.net/manual/en/pdo.prepare.php。例2は、私が書いたようにクエスチョンマークを付けて使用する簡単な方法です。 PHPはexecuteメソッドで渡した値に置き換えます。 – Crashspeeder

関連する問題