mysql视图创建问题

vbker 2014-10-21 05:31:30
数据库中有四张表
A、B、C、D
其中A表 是BCD三张表的汇总,但是BCD表中有还有各自的一些信息没有汇总到A表中,现在我想做一个视图,把A、B、C、D中的数据汇总显示到一个视图里面。我用A表和B表创建视图的时候数据正常,但是用A表和B表和C表三个表创建视图的时候,出来的数据就混乱了,这个该怎么做呢?
...全文
248 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenfangjian123 2014-10-23
  • 打赏
  • 举报
回复
union几次
chengchow2001 2014-10-23
  • 打赏
  • 举报
回复
mysql> select * from bcd;
+------+------+-------+----------+----------+-------+-------+-------+
| biao | id   | shuzi | xingming | nianling | btese | ctese | dtese |
+------+------+-------+----------+----------+-------+-------+-------+
| b    |    1 | 12    | zhangsan |     NULL |    99 |  NULL |  NULL |
| c    |    1 | 35    | NULL     |       22 |  NULL |    55 |  NULL |
| d    |    1 | 22    | lisi     |     NULL |  NULL |  NULL |    66 |
+------+------+-------+----------+----------+-------+-------+-------+
chengchow2001 2014-10-23
  • 打赏
  • 举报
回复
create view bcd
as
select
    'b' as biao,id,shuzi,xingming,null as nianling,btese,null as ctese,null as dtese
from b 
    union all 
select
    'c' as biao,id,shuzi,null as xingming,nianling,null as btese,ctese,null as dtese
from c
    union all
select 
    'd' as biao,id,shuzhi,xingming,null as nianling,null as btese,null as ctese,dtese
from d;
select
a.id,a.biao,a.riqi,a.bid,a.zhi,bcd.shuzi,bcd.xingming,bcd.nianling,bcd.btese,bcd.ctese,bcd.dtese 
from 
a,bcd where a.biao=bcd.biao and a.bid=bcd.id;
+------+------+-----------+------+------------+-------+----------+----------+-------+-------+-------+
| id   | biao | riqi      | bid  | zhi        | shuzi | xingming | nianling | btese | ctese | dtese |
+------+------+-----------+------+------------+-------+----------+----------+-------+-------+-------+
|    1 | b    | 2014/10/1 |    1 | zhangsan12 | 12    | zhangsan |     NULL |    99 |  NULL |  NULL |
|    2 | c    | 2014/10/1 |    1 | 57         | 35    | NULL     |       22 |  NULL |    55 |  NULL |
|    3 | d    | 2014/10/1 |    1 | 22lisi     | 22    | lisi     |     NULL |  NULL |  NULL |    66 |
+------+------+-----------+------+------------+-------+----------+----------+-------+-------+-------+
这结构太混乱了,重新设计你的数据库
vbker 2014-10-23
  • 打赏
  • 举报
回复
引用 14 楼 chenfangjian123 的回复:
union几次
你好,能给个具体的写法么?
vbker 2014-10-22
  • 打赏
  • 举报
回复
求救,求救
vbker 2014-10-22
  • 打赏
  • 举报
回复
没得救了么?
vbker 2014-10-21
  • 打赏
  • 举报
回复
引用 10 楼 ACMAIN_CHM 的回复:
引用
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
.
我是使用的是 mysql5.5,我不知道怎么使用mysql语句创建视图,我使用的是Navicat for MySQL的视图工具来创建的视图,几个表结构和数据是在下面图片中
ACMAIN_CHM 2014-10-21
  • 打赏
  • 举报
回复
引用
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
.
vbker 2014-10-21
  • 打赏
  • 举报
回复
引用 6 楼 ACMAIN_CHM 的回复:
select * from a,b,c,d where a.id=b.id and b.id=c.id and c.id=d.id
这个貌似不行啊
vbker 2014-10-21
  • 打赏
  • 举报
回复
还是上截图吧 图片中 a表示 bcd三个表的汇总表,视图中的内容又包含了 abcd四个表的数据,这个视图应该怎么做呢?
vbker 2014-10-21
  • 打赏
  • 举报
回复

a表					c表					
id	biao	riqi	bid	zhi	id	riqi	shuzi	nianling	ctese	
1	b	2014/10/1	1	张三12	1	2014/10/1	35	22	55	
2	c	2014/10/1	1	57	d表					
3	d	2014/10/1	1	22李四	id	riqi	shuzhi	xingming	dtese	
b表					1	2014/10/1	22	李四	66	
id	riqi	shuzi	xingming	btese						
1	2014/10/1	12	张三	99						
最终视图										
id	biao	riqi	bid	zhi	shuzi	xingming	nianling	btese	ctese	dtese
1	b	2014/10/1	1	张三12	12	张三		99		
2	c	2014/10/1	1	57	35		22		55	
3	d	2014/10/1	1	22李四	22	李四				66

ACMAIN_CHM 2014-10-21
  • 打赏
  • 举报
回复
select * from a,b,c,d where a.id=b.id and b.id=c.id and c.id=d.id
CT_LXL 2014-10-21
  • 打赏
  • 举报
回复
引用 4 楼 vbker 的回复:
不好意思 全乱了
你还是把你想显示的结果给出来吧,不是很明白你想要什么结果
vbker 2014-10-21
  • 打赏
  • 举报
回复
不好意思 全乱了
vbker 2014-10-21
  • 打赏
  • 举报
回复
接上面,我要换行,结果直接发布了 A表 B表 C表 D表 ID 表名 表id 日期 合并 ID 日期 地址 事件 ID 日期 地址 人物 ID 日期 地址 人物 1 b 1 10.24 地址+事件 1 10.24 xxx XXXX 1 10.24 xxx cccc 1 10.14 bbbb tttttt 2 c 1 10.24 地址+人物 3 d 1 1024 地址+人物 大概是上面四张表,我想把b表的信息都显示出来,然后再在每条信息之后显示出来A表不存在的信息但是其他表中存在的信息
vbker 2014-10-21
  • 打赏
  • 举报
回复
我用 Navicat Premium 视图工具创建的,BCD三张表示平行的,A表中又记录了每张表数据里面的每个信息的ID,我直接发表结构吧。 A表
CT_LXL 2014-10-21
  • 打赏
  • 举报
回复
引用 楼主 vbker 的回复:
数据库中有四张表 A、B、C、D 其中A表 是BCD三张表的汇总,但是BCD表中有还有各自的一些信息没有汇总到A表中,现在我想做一个视图,把A、B、C、D中的数据汇总显示到一个视图里面。我用A表和B表创建视图的时候数据正常,但是用A表和B表和C表三个表创建视图的时候,出来的数据就混乱了,这个该怎么做呢?
应该是你创建视图的SQL有问题吧

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧