现在有个公司表A
有公司的其他相关信息表:公司工商管理表B,公司违法信息表C,公司税务信息表D,公司工商管理表E。。。。。。,每条信息都有录入时间,每个表都通过外键companyid关键公司表A表的Id,表示这条信息属于哪个公司的。
现在要做个查询,就是查询公司列表,同时查询这些公司没个公司最新录入的一条相关信息,这条信息可能是B表里的,可能是C表里的,也可能是D表里的,也可能是E表里的,要求只查询一条相关信息。
怎么做这个查询比较好呢。
1.查询公司的时候,再分别去查询B,C,D,E表里的企业相关信息里的最新的,然后再比较查询出来这几个表里的最新的?
2.在录入企业相关的BCDE表的时候,每录入一次,我都在A表里更新一下最新的,查询的时候直接在A表里把相关信息能直接显示出来了?
怎么设计比较好呢,急,在。线。等。。。
现在想按照1来查询,但是怎么写这个sql查询效率比较高呢
可以给每个一张表全部用union all 联合起来 最后用max 查出最大的时间。再根据时间查出每个表中的id
看系统的速度要求.
如果数据量大,最好就是你的做法,每做一次录入,写入另一张表(最新录入表),然后查的时候只查这张表,就好了.
最新录入表里,记录哪张表的哪个id.就行了.
我的建议是方案1。采用分别查出4个表最新记录(可以只出主键和日期)进行比较,然后根据比较结果再用主键去查最新记录。
还有,我记得我回答过这个问题,怎么又提问了一次,而且我好像找不到我先前回答的问题了。
怎么又来问一遍...http://www.iteye.com/problems/85210
公司工商管理表B,公司违法信息表C,公司税务信息表D,公司工商管理表E 如果是使用同一主键生成序列的话 就好办多了 union all 取每个公司在union all集合中的最大信息表id 即可
[quote]
love398146779
[/quote]
:idea:
推荐
[quote]
看系统的速度要求.
如果数据量大,最好就是你的做法,每做一次录入,写入另一张表(最新录入表),然后查的时候只查这张表,就好了.
最新录入表里,记录哪张表的哪个id.就行了.
[/quote]
[quote]
love398146779
[/quote]
:idea:
如果分页显示的话,建议用1方案,多表关联查询并都做全表扫描,引起死锁的几率比较大。