现有三张表。所有字段类型都为字符串类型。
a表中有字段fv_code fv_path fv_type
b表中有字段fv_code fv_name
c表中也有字段fv_code fv_name
a.fv_code = b.fv_code或者a.fv_code = c.fv_code
b.fv_comm = c.fv_comm
现在我要得到a.fvcode,a.fv_path,a.fv_type以及a.fv_code所对应的fv_name
求帮助
你给出的关系b、c两张表不是就可以得出?
select a.fvcode,a.fv_path,a.fv_type,b.fv_name from a as a
where 1=1
left join b as b on a.fv_code=b.fv_code
left join c as c on a.fv_code=c.fv_code
select a.fvcode,a.fv_path,a.fv_type,b.fv_name from a as a
where 1=1
left join b as b on a.fv_code=b.fv_code
left join c as c on a.fv_code=c.fv_code
因为没数据,没在navcat里测,大致就这样,因为描述整的我有点模糊,按理应该两张数据表,一张中间表,但是你的 b表,c表字段一样,不知道有什么用
首先,你没说清楚 b表 和 c表的关系,如果这两个表中的 fv_code 和 fv_name 字段对应关系和数据都是一致的,即这两个字段是啷个表中的冗余字段。那么按照我这个SQL就可以,我只是手动写上了,需要你自己进行验证。
SELECT a.fv_code, a.fv_path,a.fv_type, b.fv_name FROM a LEFT JOIN b ON a.fv_code = b.fv_code
我这里使用的是左连接,没有进行分组和条件筛选,如果你 a表中的 fv_code 有重复后面数据也有重复。请注意!
我晕,你这bc两个表是重复了?满足你的需要只要b或者c一张表就OK了啊,没必要多张表
select a.fvcode,a.fv_path,a.fv_type ,c.fv_name from a left join c on a.fv_code = c.fv_code
select * from (select * from b.fv_code,b,fv_name from b
left join a on a.fv_code = b.fv_code) a
left join
(select * from c.fv_code,c.fv_name from c
left join a on a.fv_code = c.fv_code) b on a.fv_code = b.fv_code
select a.fvcode,a.fv_path,a.fv_type ,c.fv_name from a left join b on a.fv_code = b.fv_code
select nvl(m.fv_code,m._fv_code) fv_code,nvl(m.fv_name,n.fv_name) from (select * from b.fv_code,b,fv_name from b
left join a on a.fv_code = b.fv_code) m
left join
(select * from c.fv_code,c.fv_name from c
left join a on a.fv_code = c.fv_code) n
上一个回答不对,试一下这个
select a.fvcode,a.fv_path,a.fv_type,c.fvname as c_fvname,b.fvname as b_fvname from a
left out join b on a.fv_code = b.fv_code or a.fv_code = c.fv_code
left out join c on b.fv_comm = c.fv_comm
不知道对不对,你试一下,哈哈
SELECT
fv_code,fv_path,fv_type,fv_name
FROM
a AS AA
JOIN b AS BB ON BB.fv_cod=AA.fv_cod
JOIN c AS CC ON CC.fv_cod=BB.fv_cod