Sql JOIN请求问题

时间:2014-09-22 11:52:35

标签: mysql sql join left-join

我有2张桌子。

A:

ida   title    
1    aaa
2    bbb
3    ccc

B:

idb    ida    date                   count
1      1      2014-09-15 14:22:37    15
2      1      2014-09-15 15:52:07    34
3      1      2014-09-15 14:25:38    16

我想得到所有的A表行,最近的日期和 B 中对应的计数,即使它们在B表中都不存在。

我希望在这个例子中得到这个结果。

A.ida   A.title  B.date                B.count  
1       aaa      2014-09-15 15:52:07   34
2       bbb      null                  null
3       ccc      null                  null

任何帮助都会被贬低:)

编辑:我的初始和错误请求是:

SELECT e.ida, MAX(n.date_add) as date_notification, n.count FROM ida e LEFT JOIN idb n ON e.ida =  n.ida group by e.ida 

不要将它加入到这个初始的堆栈中是很难的。

1 个答案:

答案 0 :(得分:0)

以下是您要查找的查询:

SELECT A.ida
    ,A.title
    ,B.date
    ,B.count
FROM tableA A
LEFT OUTER JOIN (SELECT B.ida
                      ,MAX(B.date) AS [max_date]
                FROM tableB B
                GROUP BY B.ida) T ON T.ida = A.ida
LEFT OUTER JOIN tableB B ON B.ida = T.ida
                           AND B.date = T.max_date
ORDER BY A.ida

第一个关节用于仅获取每个ida的最后日期,第二个关节用于从tableB获取相应的信息。

希望这会对你有所帮助。