2017-01-10 22 views
0

我正在嘗試製作一個顯示添加到數據庫的產品的頁面。計算包含file_name的表中的行數#

我需要使用'foreach'來自動顯示所有產品。

我堅持一個地方,我需要顯示每個產品的下載數量。唯一的方法是計算下載表中包含產品文件名的行數。

這是我使用至今,但它不工作:

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 

這些都是我的表:[產品,file_product,文件下載]

Table: products

Table: file_product

Table: files

Table: downloads

回答

0

你必須寫:

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

然後,這個命令多少行每個表返回由descroissant爲了每個FILE_NAME組。

爲了實現蒙山PHP:

<?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,這聽起來非常像你想讓別人爲你寫這個。這違背了Stack Overflow的精神。您已收到有關您的查詢應該如何的答案。 – 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 | 
--------------------------- 

您可以JOIN與您file_product表,如果你需要將它限制爲僅文件爲當前產品,正如我寫的會給你所有產品的所有文件。

例子:

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`; 

?是你把產品ID爲當前產品。

+0

感謝您的快速回復!我如何在PHP中實現這個功能,以便我可以簡單地「回顯」每個產品的數量? – rohanmcdermott

+0

@rohanmcdermott:這不是一個簡單的答案。我不知道你是如何打開數據庫連接並查詢的。如果你使用框架,你需要使用框架的約定。如果您使用的是直連PHP,那麼您必須使用PDO或mysqli打開數據庫連接。看看這個頁面上的「Examples」部分:http://us1.php.net/manual/en/pdo.prepare.php。示例#2是一種更簡單的方式,可讓您使用查詢,並使用問號標記。 PHP將用您在執行方法中傳遞的值替換它。 – Crashspeeder

相關問題