2017-04-11 56 views
0

我有兩個表第一次被稱爲'帖子',第二個被稱爲'朋友' 我想獲得的帖子,它的'發佈者'列存在'朋友'表(這意味着要得到朋友的帖子)比我想要通過'posts'表中找到的日期時間列命令它。獲取用戶的朋友的帖子,並按colomns datetime排序

我曾嘗試是:

$fetch_fr_result = $conn->query("SELECT frid FROM friends WHERE username='$userusername'"); 
while ($fetch_fr_send = $fetch_fr_result->fetch(PDO::FETCH_OBJ)){ 
$fetch_fr_id = $fetch_fr_send->frid; 

$fetch_fr_data_result = $conn->query("SELECT username FROM users WHERE id='$fetch_fr_id'"); 
$fetch_fr_data_send = $fetch_fr_data_result->fetch(PDO::FETCH_OBJ); 
$fetch_fr_data_username = $fetch_fr_data_send->username; 

$fetch_posts_result = $conn->query("SELECT * FROM posts WHERE publisher='$fetch_fr_data_username' ORDER BY orderdate DESC LIMIT 5"); 

while ($fetch_posts_send = $fetch_posts_result->fetch(PDO::FETCH_OBJ)){ 
$fetch_posts_msg = $fetch_posts_send->thetext; 
$fetch_posts_time = $fetch_posts_send->time; 
if (!empty($fetch_posts_msg)){ 
echo '<div class="posttext">' . $fetch_posts_msg . '</div> - ' . $fetch_posts_time; 
} 
} 
} 

在這段代碼的問題是: 獲取然後每個朋友得到朋友的帖子,然後按時間順序它們,但我想按時間排序的所有朋友的帖子!

請告訴我該怎麼做?

+0

你能告訴我們你的表結構嗎?順便說一句,你想在這裏加入表格。 –

+0

以下是表格圖片:http://imgur.com/4mFKkTM | http://imgur.com/GDHJfAI –

+0

和用戶表請。 –

回答

0

也許我誤解了你的問題,但這可能會給你你想要的。如果不告訴我什麼是錯的,我會盡力解決它。

$fetch_result = $conn->query(' 
    SELECT 
     `p`.thetext, 
     `p`.time 
    FROM 
     `friends` as f, 
     `users` as u, 
     `posts` as p 
    WHERE 
     `f`.frid = `u`.id /* join friends id with users table */ 
    AND 
     `p`.publisher = `u`.username /* join friends username with posts table */ 
    AND 
     `f`.username = "' . $userusername . '" 
    ORDER BY 
     `p`.orderdate DESC 
'); 

我建議你在其他表中使用userid作爲外鍵,而不是用戶名。你應該改變數據類型來使用更合適的東西。表中有太多的varchar(1000)。

+0

感謝您的建議,對於我的問題,我遇到了同樣的問題,請參閱此處的圖像:http://imgur.com/rdqCUu4 –

+0

問題在於帖子,它獲取用戶朋友的帖子和工作,但所有帖子(不是每個朋友帖子)的順序不工作:( –

+0

你可以運行我在一個sql客戶端中寫入的查詢,並更改$ userusername與一個實際的用戶名和發送結果的屏幕截圖? –

相關問題