首页 新闻 会员 周边

把两个表的记录连前来显示

0
悬赏园豆:30 [已解决问题] 解决于 2007-11-24 10:51
<P>有两个表 ta ,tb .</P> <P>ta的字段:ta.id ,ta.name ,ta.date</P> <P>tb的字段:tb.id,tb.FK_ID,tb.content.</P> <P>ta的一条记录的对应tb的多条记录。</P> <P>现在我想得到如下的显示:</P> <P>ta.id ,ta.name ,ta.date,&nbsp;&nbsp; tb.id,&nbsp;&nbsp; tb.FK_ID, tb.content.</P> <P>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aaa&nbsp;&nbsp;&nbsp;&nbsp; 1983-12-12&nbsp;&nbsp;&nbsp; 101&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdfsadf</P> <P>也就是让ta表的后面紧跟tb表的一条最新信息。</P> <P>谢谢各位大侠!</P>
谢T的主页 谢T | 初学一级 | 园豆:17
提问于:2007-11-22 14:27
< >
分享
最佳答案
0
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 然后看看谁快谁慢,再分析分析原因,对你自己有好处的
电机拖动 | 小虾三级 |园豆:1295 | 2007-11-22 14:44
其他回答(6)
0
听你的描述 你的 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); 试试吧 !
temptation | 园豆:205 (菜鸟二级) | 2007-11-22 14:42
0
mark
丹心猪(Dansinge) | 园豆:125 (初学一级) | 2007-11-22 17:10
0
第一楼的回答可能没看清问题,问题是ta表外连tb表的一条最新信息. 思路就是先select TB 表的最新信息,因为TB表没有时间,估计插入记录应该是ID增长来算的,max(tb.id) 应该是最新的了,然后在外连ta ,tb.FK_ID应该是ta的ID.
zjy | 园豆:3194 (老鸟四级) | 2007-11-23 10:51
0
楼主是在考我们呢?@_@||
Charming.Z | 园豆:215 (菜鸟二级) | 2007-11-23 12:56
0
出过这方面的面试题。
暗香浮动 | 园豆:361 (菜鸟二级) | 2007-11-23 16:29
0
select top 1 * from ta inner join tb on ta.id = tb.FK_ID order by tb.id desc 这样OK 不?
小树爸爸 | 园豆:210 (菜鸟二级) | 2007-11-23 17:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册