2012-10-13 22 views
2

我試圖進入數組,其中包含來自MYSQL查詢的結果。 我有2個ids存儲在表hitlist user_id和mark_id 他們需要加入表中的用戶來檢索那裏匹配id和未來其他變量的用戶名。Mysql加入兩個Id的去那裏用戶名

我有一個奇怪的方式這方面的工作,並hopeing得到一個比較有效簡單的方法這方面的工作與此類似

$Hitlists = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.user_id = users.id AND hitlist.mark_id = users.id")->fetchAll(); 

這是代碼我有一個工作...現在它看起來它可能會給我後來的問題。

<?php 
$index = 0; 
$Hitlists = array(); 
$st = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.user_id = users.id")->fetchAll(); 
$sth = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.mark_id = users.id")->fetchAll(); 

foreach($st as $id) 
{ 
    $Hitlists[] = $id; 
} 

foreach($sth as $id) 
{ 
     $Hitlists[$index]['markedby'] = $id['username']; 
     $Hitlists[$index]['mark_id'] = $id['mark_id']; 
     $index++; 
} 
+0

所以有什麼問題? –

+0

如果'mark_id'或'user_id'與'users.id'匹配,您是否想要組合結果或那些行? – Starx

+0

它應該結合得到b的用戶名。或者c。正如John Woo在下面所回答的。 – Tprice88

回答

3

你加入表的方式是錯誤的。你可以得到你想要的確切記錄,您需要加入users表兩次獲得各ID

SELECT a.*, 
     b.username User_name, 
     c.username mark_name  
FROM hitlist a 
     INNER JOIN users b 
      ON a.user_id = b.id 
     INNER JOIN users c 
      ON a.mark_id = c.id 

的用戶名,您可以訪問

$result['User_name'] 
$result['mark_name'] 
+1

哈哈,我不知道我爲什麼寫這個答案 – Starx

+0

@Starx只是很奇怪.. hehe –

+0

你知道我將如何訪問b.username和c.username嗎? – Tprice88