当前位置: 代码迷 >> Sql Server >> Sql难点
  详细解决方案

Sql难点

热度:55   发布时间:2016-04-24 19:02:24.0
Sql难题
Design a product catalogue with products (name, price, description), and n-level and multiple categories and manufacturer (name, logo). Draw normalized table structure with primary & foreign keys and write SQL to retrieve all n-level category products recursively, expected output:
Books – Philosophy – Metaphysics
Books – Philosophy – Confucianism - Mencius
Books – Literature – Lin Yutang
Software – Utilities – File Management
对应翻译:
设计一个产品的产品目录(名称,价格,描述),和N级和多个类别和制造商(名称,标识)。设计出表(带主键和外键)的结构和编写标准化的SQL递归检索所有n级类产品,预期的输出:

图书 - 哲学 - 形而上学

图书 - 哲学 - 儒家 - 孟子

图书 - 文学 - 林语堂

软件 - 工具 - 文件管理
------解决方案--------------------
产品表: 产品ID,名称,价格,描述,类别ID..

类别表: 类别ID,父类别ID,名称,标识..
------解决方案--------------------
产品表:
产品id  -PK
类别id  -FK
制造商id -FK
产品名称
产品价格
产品描述
...
备注
删除区分
登录人
登录日入
最后修改人
最后修改日期
--------------------
类别表:
类别id   --PK
父类id   --FK
类别名称
标识
...
备注
删除区分
登录人
登录日入
最后修改人
最后修改日期
---------------
制造商表:
制造商id  --PK
制造商名称
...
备注
删除区分
登录人
登录日入
最后修改人
最后修改日期


------解决方案--------------------

产品(产品id,名称,价格,描述,制造商id)
目录(目录id ,名称,pid)
制造商(制造商id,名称)
数据表(目录id,产品id)

预期输出只是目录和产品信息

;WITH cte AS (
SELECT * FROM 目录 a WHERE 目录id='根'
UNION ALL
SELECT u.* FROM 目录 u JOIN cte v ON v.目录id=u.pid
)
SELECT * FROM cte a JOIN 数据表 b ON a.目录id=b.目录id
JOIN 产品 c ON a.产品id=c.产品id


"设计一个产品的产品目录(名称,价格,描述)"
Design a product catalogue with products (name, price, description),
楼主翻译可能有点错
  相关解决方案