Coder编程 2017-04-23 02:11 采纳率: 50%
浏览 803
已采纳

求问一个Oracle 查询语句如何写!

问题是这样的:
我有三张表:用户表,留言表,附件表。
表结构如下:
用户表:
create table t_user(
u_id int primary key, --编号
u_username varchar2(50), --客户名称
u_password varchar2(50), --客户密码
u_nickname varchar2(50), --客户的昵称 1、普通用户,3表示超级管理员,0表示匿名用户
u_type int, --客户类型 1、普通用户,3表示超级管理员
u_status int, --客户状态 有停用和启用两种状态:0表示启用,1表示停用
u_email varchar2(50), --客户邮箱
u_hiddenMsg int, --客户是否能发信息 0表示不禁止,1表示禁止
u_createDate date --客户的创建时间
)
留言表:
create table t_message(
m_id int, --留言信息的编号
m_title varchar2(200), --留言信息的题目
m_content clob, --留言信息的内容
m_create_date date, --留言信息的创建时间
u_id int --客户的编号
)
附件表:
create table t_attachment(
a_id int PRIMARY KEY, --附件编号
a_newName varchar2(100), --附件新名称
a_oldName varchar2(100), --附件原始名称
a_content_type varchar2(100), --附件类型
a_create_date date, --创建时间
m_id int --留言编号
)

如何写SQL语句达到:

显示所有用户的留言和附件。用户可能有多个留言,留言里面可以有附件可以有多个附件也可以没有附件。

效果如图:
图片说明

  • 写回答

3条回答 默认 最新

  • 普通网友 2017-04-23 07:52
    关注

    insert into t_user values(1,'use1','123','user1',1,0,'test@qq.com',0,now());
    insert into t_user values(2,'use2','123','user2',1,0,'test@qq.com',0,now());

    insert into t_message values(1,'msg11','content11',now(),1);
    insert into t_message values(2,'msg12','content12',now(),1);
    insert into t_message values(3,'msg21','content21',now(),1);
    insert into t_message values(4,'msg22','content22',now(),1);

    insert into t_attachment values (1,'attach1','attach1','zip',now(),1);
    insert into t_attachment values (2,'attach2','attach1','zip',now(),1);

    select t_message.m_id,a_id from t_message,t_attachment where t_message.m_id = t_attachment.m_id;
    select t_message.u_id,m_id from t_user,t_message where t_message.u_id = t_user.u_id;
    #left join可以满足你的要求,右侧对附件表的连接,没有附件的话会补NULL
    select * from ((select t_message.u_id,m_id from t_user,t_message where t_message.u_id = t_user.u_id) as a left join (select t_message.m_id,a_id from t_message,t_attachment where t_message.m_id = t_attachment.m_id) as b on a.m_id = b.m_id);

    u_id | m_id | m_id | a_id
    ------+------+------+------
    1 | 1 | 1 | 1
    1 | 1 | 1 | 2
    1 | 2 | |

    1 | 3 | |

    1 | 4 | |

    (5 rows)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况