2015-01-06 576 views
0

我有一個論壇,用戶可以發佈問題,並可以評論和鳴叫。選擇所有評論的所有評論php mysql

我想獲得每篇文章的所有commentstweets

我之前做過的是在3組查詢中做到這一點。

$data = mysqli_query($con,"select * from posts"); 
while($row = mysqli_fetch_assoc($data)){ 
    $pid = $row['post_id']; 
    $dataCo = mysqli_query("SELECT comments.* FROM comments WHERE post_id = $pid"); 
    $dataTw = mysqli_query("SELECT tweets.* FROM tweets WHERE post_id = $pid"); 
    //2 while loop for comments and tweets 

} 

誰能告訴我,我該怎麼辦,這些事情在一個單一查詢,因爲如果得到了很多的posts在第一次查詢,然後會有很多的查詢做的。

也許有更快的方法嗎?

+0

使用'join' ... – sgeddes

+4

查看如果這些表具有不同的結構和不同數量的評論/推文,那麼請勿嘗試在單個查詢中執行此操作。你會爲此嘗試而受苦。 –

+0

他們確實有不同的評論/推文@MarcB。那麼我的查詢會如此快嗎?或者有另一種方法 –

回答

0

也許你可以IN子句

http://www.tutorialspoint.com/mysql/mysql-in-clause.htm

使用MySQL在你的榜樣,你總是有2 * N + 1個查詢數據庫。這個查詢中返回行的數量爲n

$data = mysqli_query($con,"select * from posts"); 

如果使用mysql IN子句,則只有3個查詢。

你的查詢應該看起來像

$dataCo = mysqli_query("SELECT comments.* FROM comments WHERE post_id IN (1,2,3,4)"); 
$dataTw = mysqli_query("SELECT tweets.* FROM tweets WHERE post_id IN (1,2,3,4)"); 

數字 「1,2,3,4」 的POST_ID在你的第一個問題返回。

+0

怎麼@pawelBrzoski?也許可以解釋一點,而不是給'IN()'命令的參考 –

+0

我已編輯帖子 –

+0

好吧,這很酷!現在它會比使用所有這些連接@pawelBrzoski更快? –