Table aaid aname apay bid cid did
a001 dabao 99.8 b01 c01 d01
a001 dabao 99.3 b01 c02 d02
a002 dabao 94.3 b01 c02 d02Table b (bid 为唯一)
bid bname
b01 红色
b02 绿色
...Table c (cid 为唯一)
cid cname
c01 圆形
c02 矩形
...Table d (did + dtype 为唯一)
did dname dtype
d01 玻璃 大片
d01 碎玻璃 小片
d02 宝石 大块
d02 碎宝石 小块
...进行联合查询:
aid 等于 a001的记录关键在于d表did不是唯一, 加dtype才是唯一索引, 简单的连接查询, 最后结果有重复记录.
aname, apay, bname, cname, dname
dabao 99.8 红色 圆形 玻璃
dabao 99.3 红色 矩形 宝石
dabao 99.8 红色 圆形 玻璃
dabao 99.3 红色 矩形 宝石如何构建Sql才能得到:
返回列:
aname, apay, bname, cname, dname
dabao 99.8 红色 圆形 玻璃
dabao 99.3 红色 矩形 宝石
a001 dabao 99.8 b01 c01 d01
a001 dabao 99.3 b01 c02 d02
a002 dabao 94.3 b01 c02 d02Table b (bid 为唯一)
bid bname
b01 红色
b02 绿色
...Table c (cid 为唯一)
cid cname
c01 圆形
c02 矩形
...Table d (did + dtype 为唯一)
did dname dtype
d01 玻璃 大片
d01 碎玻璃 小片
d02 宝石 大块
d02 碎宝石 小块
...进行联合查询:
aid 等于 a001的记录关键在于d表did不是唯一, 加dtype才是唯一索引, 简单的连接查询, 最后结果有重复记录.
aname, apay, bname, cname, dname
dabao 99.8 红色 圆形 玻璃
dabao 99.3 红色 矩形 宝石
dabao 99.8 红色 圆形 玻璃
dabao 99.3 红色 矩形 宝石如何构建Sql才能得到:
返回列:
aname, apay, bname, cname, dname
dabao 99.8 红色 圆形 玻璃
dabao 99.3 红色 矩形 宝石
distinct 另外如果你的d中没有重复的记录的话。查询结果就不会有重复的记录。因为只有d的主键不是 一个字段。先问一句。怎么会有重复的记录呢??????? 不是说 did + dtype为唯一索引吗?
aname,apay,bname,cname,dname
from a,b,c,
(select did,max(length(dname)) dname from d group by did) e
where a.bid = b.bid and a.cid = c.cid and a.did = e.did
select
aname,apay,bname,cname,dname
from a,b,c,
(select did,min(length(dname)) dname from d group by did) e
where a.bid = b.bid and a.cid = c.cid and a.did = e.did
select
aname,apay,bname,cname,dname
from a,b,c,
(select did,dname
from d,(select did eid,min(length(dname)) dname_len from d group by did) e
where d.did = e.eid and length(dname) = dname_len) f
where a.bid = b.bid and a.cid = c.cid and a.did = f.did
应该是正解
from a,b,c,(select distinct did,dname
from d) d
where a.bid = b.bid and a.cid = c.cid and a.did = d.did