各位高人,求解决方案, 我目前有4个表,一个是主表,3个是副表。
我现在需要一个查询来拿到所有表中的数据。
暂且给这4个表命名为,company, history, staff,task. 每个公司对应多个history,staff和task
首先,我必须要用
select * from company where status = 'active'来查询所有company信息,当然了,也包括了companyID。
然后我要用
select * from history where company_id = 'companyID'
select * from staff where company_id = 'companyID'
select * from task where company_id = 'companyID'
------解决方案-------------------- SQL存储过程内容大致如下:
select * from
Company
inner join history on history.company_id = Company.companyID
inner join staff on staff.company_id = Company.companyID
inner join task on task.company_id = Company.companyID
where company.status = 'active'
但是不知道你返回的数据条数有多少,如果上千可以讲究,但是如果上万,那么在程序设计中还是需要避免的,因为太多的数据基本用书也不会全部看,一般就只关心自己感兴趣的。这种情况下,那你可以使用原先的:select * from company where status = 'active'先建立一个下拉菜单,当用户选择了一个company以后,再选择出这个company的信息 ------解决方案-------------------- 你的“需要一个查询来拿到所有表中的数据”太抽象了,很难给出答案,最好给少量数据,和期待结果,如果你是为了页面展示,用sql来搞成树状结构也不好弄。数据量不大且不是频繁使用的话可以考虑控件来多次查询,如果频繁使用,可以考虑页面缓存所有数据,但是你首先要清晰地告诉别人你要干嘛 ------解决方案--------------------
用 select * from company a
outer cross apply
(select top(1)* from history b where a.company_id = b.company_id)b
(select top(1)* from staff b where a.company_id = b.company_id)c
(select top(1)* from task b where a.company_id = b.company_id)d
where a.status = 'active'