mysql 能不能创建一个 有列级函数 的联合视图?

查看:97
本文介绍了mysql 能不能创建一个 有列级函数 的联合视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

刚学创建视图,老是自己多做几个实例,想提高一下,
遇到一个问题,我先大体解释一下怎么回事:

表1 shbooks 里面是书籍,
表2 shtype 里面是书籍的分类;
表1的cid 正好 等于 表2的id;

我先用表2.cid=表1.id创建了一个视图;

又想创建一个统计视图,但是这个统计视图是基于 shbooks 表的属性用 GROUP BY cid , COUNT(*) 创建的,
但是这个统计视图没有 书类目的名, 只有书类目的id?
请问怎么才能从 shtype 中把书类目名拿过来?

表1 shbooks:

id name cid price time
1 挪威的森林 1 86.85 2016-05-05 23:34:18
2 经济学解释 2 23.11 2016-05-05 23:34:18
3 麦田里的守望者 1 53.87 2016-05-05 23:34:18
4 伯罗奔尼撒战争 3 36.02 2016-05-05 23:34:18
5 老人与海 1 98.9 2016-05-05 23:34:18
6 海边的卡夫卡 1 57.21 2016-05-05 23:34:18
7 人类群星闪耀时 3 79.52 2016-05-05 23:34:18
8 动物农场 1 79.78 2016-05-05 23:34:18

表2 shtpye:

id type
1 文学
2 经济
3 历史
4 侦探

用表2.cid=表1.id创建了一个视图;
创建成功的创建的视图:

主键 书名 类号 类目 价格 导入时间
1 挪威的森林 1 文学 86.85 2016-05-05 23:34:18
3 麦田里的守望者 1 文学 53.87 2016-05-05 23:34:18
5 老人与海 1 文学 98.9 2016-05-05 23:34:18
6 海边的卡夫卡 1 文学 57.21 2016-05-05 23:34:18
8 动物农场 1 文学 79.78 2016-05-05 23:34:18
10 追忆似水年华 1 文学 82.27 2016-05-05 23:34:18
12 舞舞舞 1 文学 73.35 2016-05-05 23:34:18
2 经济学解释 2 经济 23.11 2016-05-05 23:34:18
13 小麦经济学 2 经济 15.19 2016-05-05 23:34:18
14 统计数字会说谎 2 经济 39.3 2016-05-05 23:34:18
4 伯罗奔尼撒战争 3 历史 36.02 2016-05-05 23:34:18

现在这个视图只有类目id,没有类目名,我想在这个视图集上加上类目名,就是可以显示shbooks中cid在 shtype 中的 type,请问怎么弄?

分类编号 分类书籍总数
1 7
2 3
3 13
4 17
5 2
6 2

创建语句如下:

CREATE OR REPLACE VIEW vcount AS SELECT
    cid AS 分类编号,COUNT(*) AS 分类书籍总数
FROM
    shbooks
GROUP BY
    cid;

解决方案

CREATE OR REPLACE VIEW
    view_count
AS SELECT 
    t.id AS 书籍类目号,
    t.type AS 书籍类目名,
    COUNT( b.name ) AS 书籍总数,
    MIN( b.price ) AS 最低价,
    MAX( b.price ) AS 最高价
FROM 
    shbook AS b,
    shtype AS t
WHERE
    b.cid = t.id
GROUP BY
    b.cid;

这篇关于mysql 能不能创建一个 有列级函数 的联合视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆