sql三表关联查询

表org:表dic:表org_dic:idnameidnameidorgdicdatedata1aaa11zhang11112012-101002bbb12wang221... 表org: 表dic: 表org_dic:
id name id name id org dic date data
1 aaa 11 zhang 1 1 11 2012-10 100
2 bbb 12 wang 2 2 12 2012-10 200
3 ccc 13 liang 3 1 11 2012-12 300
4 ddd 14 fang 4 4 14 2012-10 400
怎么查询出表org_dic里的所有的数据,对于org、dic相同的记录取日期大的一条记录,求完整sql
展开
 我来答
choikyo
推荐于2016-02-11 · TA获得超过5455个赞
知道小有建树答主
回答量:668
采纳率:0%
帮助的人:581万
展开全部
您描述的不详细,但从这这个简单的表看,我个人假设您所列表的 id 是他们的索引

先不看后面给的条件,先把表相连:
那么三表相连为 , 由于是针对org_dic所有的数据,所以在join时, 对org_dic用full join, :
select *
from org_dic
left outter join dic on org_dic.id=dic.id
left outter join org on org_dic.id=org.id
这么写,

然后是看条件。 对于org, dic相同的数据, 如果相同, 那么取 这组 org, dic相同数据组中最大日期。

那等于是在上面join形成的大表中按 org_dic中的 (org, dic)数据分组。

所以,等于是在group by (org, dic)

再回到上面的select. 刚才用了“*”代替你需要的查找结果,你实际的查找是寻找一个日期。 也就是org_dic.date

因此整合一下上面所讲的:

select max(org_dic.date)
from org_dic
left outter join dic on org_dic.id=dic.id
left outter join org on org_dic.id=org.id
group by (org, dic) .

这里要注意的是,由于你group by 了 (org, dic) 因此,你可以在select 里面显示 org, dic数据。 这里有个规则,我自己总结的,语言表述望包含: “Select 语句如果和group by 并用,那么 select所跟的列, 如果此列没有使用整合性函数,那么就必须要包含在group by 中”。 以上的语句语法是没有问题, 但是会发现结果全是日期,而不知道是那组的日期。
根据上面那个规则, 你可以写:select org_dic.org, org_dic.dic, max(org_dic.date) 。

所以最后结果为:
select org_dic.org, org_dic.dic, max(org_dic.date)

from org_dic
left outter join dic on org_dic.id=dic.id
left outter join org on org_dic.id=org.id
group by (org, dic);
匿名用户
2012-11-14
展开全部
select a.id,a.org,a.dic,max(a.date),a.data
from org_dic as a
left join org as b on a.org=b.id
left join dic as c on a.dic=c.id
group by a.id,a.org,a.dic,a.data
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-12
展开全部
SELECT
*
FROM
org_dic main
WHERE
NOT EXISTS (
SELECT 1
FROM org_dic sub
WHERE
main.org = sub. org
AND main.dic = sub. dic
AND main.date< sub. date
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-12
展开全部
select max(date ),id,org,dic from org_dic where date in(select date from a1 group by t2) group by id,org,dic
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诚展考勤易
2012-11-12 · TA获得超过159个赞
知道小有建树答主
回答量:539
采纳率:96%
帮助的人:139万
展开全部
再补充一下吧,有点看不懂你的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式