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