2017-03-03 67 views
1

我有一個文章表格,並將它顯示在while循環的主頁中。在while循環內我想顯示每篇文章的評論數量和圖片數量。在while循環中爲每篇文章的評論和圖片表格選擇

它現在正在爲我工​​作,但總共有三個查詢,我試圖在第一個查詢中結合它,然後在一個while循環中將它們全部顯示出來。這裏就是我想實現:Articles page

當前格式我下面:

//a represents articles table, c represents comments table, i represents image table 

$query = mysqli_query($conn, "SELECT a.a_id, a.title, a.datetime, a.user_id FROM a ORDER BY a.datetime DESC"); 

while($fetch = mysqli_fetch_assoc($query){ 
    $imageQ = msqli_query($conn, "SELECT COUNT(image_path), image_path FROM i WHERE a_id = '$fetch['a_id']'"); 
$imageFetch = mysqli_fetch_assoc($imageQ); 
$commentQ = mysqli_query($conn, "SELECT COUNT(comment_id) FROM c WHERE a_id = '$fetch['a_id']'"); 
$commentFetch = mysqli_fetch_assoc($commentQ); 
} 

我想所有這些查詢塞進其獲取的文章和評論數和圖像計數一個單一查詢爲每篇文章和第一張圖片。

回答

0

圖像和評論是的數據的單獨的尺寸。所以,你必須小心如何把它們放在一起。在你的情況下,你可以在進行連接之前彙總這些值:

SELECT a.a_id, a.title, a.datetime, a.user_id, 
     i.num_images, c.num_comments 
FROM a LEFT JOIN 
    (SELECT a_id, COUNT(image_path) as num_images 
     FROM i 
     GROUP BY a_id 
    ) i 
    ON i.a_id = a.a_id LEFT JOIN 
    (SELECT a_id, COUNT(comment_id) as num_comments 
     FROM c 
     GROUP BY a_id 
    ) c 
    ON c.a_id = a.a_id 
ORDER BY a.datetime DESC; 
+0

謝謝@GordonLinoff我現在正在使用你的方法! – Khalid

0

您可以使用MySQL的嵌套查詢類似

選擇一個。 ,tab1。,TAB2。*從INNER JOIN(SELECT * FROM B)爲TAB1 INNER JOIN(SELECT * FROM C)爲TAB2

希望這可以讓你獲得所需的輸出。

由於

相關問題