2014-01-07 93 views
1

我有兩個表,一個「用戶」和「更新」表。我想從表中抓取這些值:如何從兩個表中獲取帖子的用戶信息?

ID,用戶名 - 從「用戶」表 消息,createdOn - 從「更新」表

我需要抓住這些值指定用戶和用戶的朋友。我已經創建了一個包含所有朋友的ID,將是這樣一個數組:

array(1,3,7,21,45); 

我需要一個查詢,將與前一陣匹配選擇的所有更新。 「更新」表格還有一個「uid」列,它定義發佈更新的用戶。這是我到目前爲止有:

$updates = "SELECT users.id, users.username, updates.message, updates.createdOn FROM users, updates WHERE updates.uid = '". $_COOKIE['id'] ."' ". $friendsNews ." ORDER BY updates.createdOn DESC LIMIT 0, 10"; 
$updates = mysql_query($updates); 

這不是爲我工作,雖然,我創建了一個foreach循環還會創建插入,看起來像這樣的查詢「$ friendsNews」一個或聲明:

foreach($myFriends as $fid) { 
    $friendsNews .= " OR updates.uid = '". $fid ."'"; 
} 

一旦整個查詢編譯查詢的結果是這樣的:

SELECT users.id, users.username, updates.message, updates.createdOn FROM users, updates WHERE updates.uid = '1' OR updates.uid = '2' OR updates.uid = '3' ORDER BY updates.createdOn DESC LIMIT 0, 10 

如果有人可以幫助我真的很感激它,我不是很有經驗的SQL語句組合。謝謝!

+0

$ _COOKIE ['id']持有什麼?用戶ID? –

+0

@ Nouphal.M它只是保存登錄的用戶id,一個整數 –

回答

3

嘗試

$sql = "SELECT users.id, users.username, updates.message, updates.createdOn, ". 
" updates.message, updates.createdOn ". 
" FROM users ". 
" INNER JOIN updates ON updates.uid = users.id ". 
" WHERE ". 
" updates.uid IN (".implode(', ', $myFriends).")"; 
+0

這對我有效,但我不得不添加「on」到: '「INNER JOIN更新ON updates.uid = users.id」。「 –

+0

是的,已更新 –

+0

非常感謝! –

1

我認爲,如果你想抓住的IDS數組中指定的用戶的所有更新,最簡單的方法是使用一個SQL JOININ條款

select users.id, users.username, u1.message, u1.createdOn 
from updates as u1 
join users as u2 on u2.id = u1.uid 
where u1.uid in(1,3,7,21,45) 
order by u1.createdOn desc limit 0, 10; 
1

試試這個

if (in_array($_COOKIE['id'], $myFriends)) { 
    $flist = implode(',', $myFriends) 
}else{ 
    $flist = $_COOKIE['id'].','.implode(',', $myFriends); //if $_COOKIE['id'] is differed..... 
} 

$sql = "SELECT users.id, users.username, updates.message, updates.createdOn,   
      updates.message, updates.createdOn FROM users INNER JOIN updates 
       updates.uid = users.id WHERE updates.uid IN (".$flist.")"; 

幫助登錄的用戶是DIFF ered .....

相關問題