2012-04-19 76 views
5

我有2個表:用戶&餘額。MySQL - 加入2個表

我想從用戶表(所有元組的所有字段)中的所有細節與來自餘額表的最新條目(由用戶ID鏈接的1個字段)一起加入表。

下面是表的結構:我一直在嘗試了幾個小時做這個

+-------------+ 
| Field  | 
+-------------+ 
| dbid  | 
| id   | 
| fName  | 
| sName  | 
| schedName | 
| flexiLeave | 
| clockStatus | 
+-------------+ 

,我可以得到的最接近的是:

平衡:

+---------+ 
| Field | 
+---------+ 
| dbid | 
| userId | 
| date | 
| balance | 
+---------+ 

用戶爲單個用戶返回一行:

SELECT u.*, b.balance, b.date FROM users u, balance b WHERE u.id = b.userId AND b.date = (SELECT MAX(date) FROM balance WHERE userId = 'A8126982'); 

或者我可以選擇所有用戶,但不是最近的入口在資產負債表:

SELECT u.*, b.balance, b.date FROM users u, balance b WHERE u.id = b.userId GROUP BY u.id; 

我已經嘗試了許多不同的查詢,似乎越來越近,但我不能去我想去的地方,以是。

任何幫助,將不勝感激。

+0

你在第一次查詢中得到的輸出是什麼? – 2012-04-19 14:43:43

回答

18

你可以使用你寫的第一個SQL但對於所有用戶:

SELECT u.*, b.balance, b.date 
FROM users u JOIN balance b ON u.id = b.userId 
WHERE b.date = (SELECT MAX(date) FROM balance WHERE userId = u.id); 

這可能不是獲得結果的最快方法,但它會給你你所需要的。我在我的應用程序中的不少地方使用類似的查詢。

+0

謝謝,這是得到我需要的結果。 – SteveJDB 2012-04-19 14:47:53