我有一个问题需要你的帮助。
我将在示例场景中解释问题是什么。
有3个表:A,B,C。 B和C与表A有多对一的关系。 B表和C表对表A中的一个条目有多个条目。 我需要查询只有一个来自B和C的条目,但必须选择该条目,以便B和C中的最新日期条目是返回的条目。我不能依赖B和C中的ID,因为它们没有订购,也不保证最大的ID是正确的。 B和C中条目的日期仅为有效标准。
以下是示例数据的示例:
Table A
tableaid | Some data ...
------------------
1 | ....
2 | ....
3 | ....
4 | ....
...
Table B
id | linkid | date | colb | Some data ...
----------------------------------------------
1 | 1 | 01/01/2000 | A1 | ....
2 | 1 | 05/20/2001 | A2 | ....
3 | 1 | 07/10/2002 | A3 | ....
4 | 2 | 10/27/2000 | B1 | ....
5 | 2 | 01/01/2001 | B2 | ....
6 | 2 | 06/01/2002 | B3 | ....
7 | 3 | 05/01/2000 | C1 | ....
8 | 3 | 01/01/2003 | C2 | ....
9 | 4 | 05/01/2004 | D1 | ....
...
Table C
id | linkid | date | colc | Some data ...
----------------------------------------------
1 | 1 | 01/01/2000 | a1 | ....
3 | 1 | 05/20/2005 | a2 | ....
2 | 2 | 07/10/2000 | b1 | ....
4 | 2 | 10/27/2003 | b2 | ....
8 | 2 | 01/01/2005 | b3 | ....
6 | 3 | 06/01/2001 | c1 | ....
9 | 3 | 05/01/2005 | c2 | ....
5 | 4 | 01/01/2000 | d1 | ....
7 | 4 | 05/01/2004 | d2 | ....
...
Result
=============================================
tableaid | colb | colc | Some other data ...
---------------------------------------------
1 | A3 | a2 | ...
2 | B3 | b3 | ...
3 | C2 | c2 | ...
4 | D1 | d2 | ...
...
我知道如何只使用A和B或C,但不能使用A和B,C。任何帮助赞赏。我有饼干:))
答案 0 :(得分:1)
使用
之类的子选择select a.*,
(select colb from tableb b where b.linkid = a.tableaid order by b.date desc limit 1) as colb
from tablea a
类似于colc的东西。