四张表
A表字段有 id name number
B表字段有 name user
C表字段有 name user
D表字段有 id username如果我想显示 A表的number B或C中的user D中的username
如果A中的name与B中的name相等显示B中的user,与C中的name相等则显示C表的user
怎样写SQL语句?
跪求大侠!!!!
谢谢!
A表字段有 id name number
B表字段有 name user
C表字段有 name user
D表字段有 id username如果我想显示 A表的number B或C中的user D中的username
如果A中的name与B中的name相等显示B中的user,与C中的name相等则显示C表的user
怎样写SQL语句?
跪求大侠!!!!
谢谢!
解决方案 »
- java或者c#操作gpib-32.dll文件出错
- servlet取参数
- java有没有提供类或方法来把数据库中的数据导出到word中,
- 郁闷 why???
- 为什么总是报java.lang.NullPointerException的错误呢?
- 在JSP中用webwork中怎么提域名地址!
- 关于JavaScript 一个问题(vba相关的):谢谢! 帮顶啊!
- 对SQL Server数据库的操作中出现“将截断字符串或二进制数据”错误
- servlet出现这样的例外是怎么回事?应该如何解决?
- 用的struts2标签 testfield 获取不到action传过来的值 刚注册 分不多 谢谢了
- 大家在公司有把表信息写在注解(annotation)里的吗
- 根据数据库取出字段值 让JSP复选框默认选中的问题(三叩首了先,谢谢)
where a.id = d.id and a.name=e.name
group by a.number
所以可以把B表C表合并为name唯一的表,然后再联合这个表查询.
这个表可以通过如下语句得到:select * from b union select * from c where c.name not in (select name from b);
--如果b,c表的字段重复的话,我觉得应该将两表合并为一个表
--下面是一个实例:
with ta as(
select '1001' id,'第一号机器' name,10 num from dual union all
select '1002','第二号机器',20 from dual union all
select '1003','第三号机器',30 from dual union all
select '1004','第四号机器',40 from dual union all
select '1005','第五号机器',50 from dual)
,tb as(
select '第一号机器' name,'Operator' users from dual union all
select '第四号机器','Manager' from dual union all
select '第三号机器','Manipulator' from dual)
,td as(
select '1001' id,'James' user_name from dual union all
select '1002','Smith' from dual union all
select '1003','Scott' from dual union all
select '1004','Jim' from dual)
select ta.id,ta.name,tb.users,td.user_name
from ta,tb,td
where ta.id=td.id --使用等值连接即可
and ta.name=tb.name
/
ID NAME USERS USER_NAME
---- ---------- ----------- ---------
1001 第一号机器 Operator James
1003 第三号机器 Manipulator Scott
1004 第四号机器 Manager Jim