[已解决问题] 把两个表的记录连前来显示
提问时间: 2007-11-22 14:27
悬赏分:30 浏览:585 次

有两个表 ta ,tb .

ta的字段:ta.id ,ta.name ,ta.date

tb的字段:tb.id,tb.FK_ID,tb.content.

ta的一条记录的对应tb的多条记录。

现在我想得到如下的显示:

ta.id ,ta.name ,ta.date,   tb.id,   tb.FK_ID, tb.content.

1        aaa     1983-12-12    101     1        sdfsadf

也就是让ta表的后面紧跟tb表的一条最新信息。

谢谢各位大侠!


最佳答案
SELECT A.ID, A.NAME, A.DATE, B.ID, B.FK_ID, B.CONTENT FROM
(SELECT * FROM TA) AS A
INNER JOIN
(SELECT * FROM TB) AS B
INNER JOIN
(SELECT MAX(ID) AS ID, FK_ID FROM TB GROUP BY FK_ID) AS C
ON B.ID = C.ID
ON A.ID = C.FK_ID

休息休息,顺便帮你写了一个,看看是否受用?^_^

补充一下:
你还可以试试下面这两个
SELECT A.ID, A.NAME, A.DATE, B.ID, B.FK_ID, B.CONTENT FROM
(SELECT * FROM TB) AS B
INNER JOIN
(SELECT MAX(ID) AS ID, FK_ID FROM TB GROUP BY FK_ID) AS C
INNER JOIN
(SELECT * FROM TA) AS A
ON A.ID = C.FK_ID
ON B.ID = C.ID

SELECT A.ID, A.NAME, A.DATE, B.ID, B.FK_ID, B.CONTENT FROM
(SELECT MAX(ID) AS ID, FK_ID FROM TB GROUP BY FK_ID) AS C
INNER JOIN
(SELECT * FROM TB) AS B
INNER JOIN
(SELECT * FROM TA) AS A
ON A.ID = B.FK_ID
ON B.ID = C.ID

然后看看谁快谁慢,再分析分析原因,对你自己有好处的
2007/11/22 14:44:20 回答者:坚持信念


提问者对于答案的评价:谢谢大家!
其它回答(6)
听你的描述
你的 A表的ID 和 B表的FK_ID 应该是一一对应的吧 ?
SELECT A.id, A.name, A.date, B.id, B.FK_ID, B.content
FROM A, B
WHERE (A.id = B.FK_ID);
试试吧 !
8个月前   回答者:temptation - 菜鸟二级
mark
8个月前   回答者:丹心猪(Dansinge) - 初学一级
第一楼的回答可能没看清问题,问题是ta表外连tb表的一条最新信息.
思路就是先select TB 表的最新信息,因为TB表没有时间,估计插入记录应该是ID增长来算的,max(tb.id) 应该是最新的了,然后在外连ta ,tb.FK_ID应该是ta的ID.
8个月前   回答者:尧尧 - 菜鸟二级
楼主是在考我们呢?@_@||
8个月前   回答者:Charming.Z - 菜鸟二级
出过这方面的面试题。
8个月前   回答者:暗香浮动 - 菜鸟二级
select top 1  * from ta inner join tb on ta.id = tb.FK_ID order by tb.id desc 
这样OK 不?
8个月前   回答者:小智 - 初学一级
评论
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除