如何利用SQL进行推理

2016-02-19 09:15 3 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐如何利用SQL进行推理,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

数据库环境:SQL SERVER 2008R2

有如下需求:
Baker, Cooper, Fletcher, Miller and Smith住在一座房子的不同楼层。
Baker 不住顶层。Cooper不住底层。
Fletcher 既不住顶层也不住底层。Miller住得比Cooper高。
Smith住的楼层和Fletcher不相邻。
Fletcher住的楼层和Cooper不相邻。
用SQL写出来
 
解题思路:
先实现所有人住楼层的排列组合,然后把条件套进去即求得。如何实现排列组合,
 
1.基础数据准备
--准备基础数据,用A、B、C、D、E分别表示Baker, Cooper, Fletcher, Miller and Smith

CREATE TABLE ttb (  subname VARCHAR(1) ,  realname VARCHAR(10) )INSERT INTO ttbVALUES ( 'A', 'Baker' ),  ( 'B', 'Cooper' ),  ( 'C', 'Fletcher' ),  ( 'D', 'Miller' ),  ( 'E', 'Smith' )

2.生成所有可能情况的排列组合
--生成A、B、C、D、E所有的排列组合

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
WITH x0   AS ( SELECT CONVERT(VARCHAR(10), 'A') AS hidUNION ALLSELECT CONVERT(VARCHAR(10), 'B') AS hidUNION ALLSELECT CONVERT(VARCHAR(10), 'C') AS hidUNION ALLSELECT CONVERT(VARCHAR(10), 'D') AS hidUNION ALLSELECT CONVERT(VARCHAR(10), 'E') AS hid),  x1   AS ( SELECT hidFROM  x0WHERE LEN(hid) = 5UNION ALLSELECT CONVERT(VARCHAR(10), a.hid + b.hid) AS hidFROM  x0 a  INNER JOIN x1 b ON CHARINDEX(a.hid, b.hid, 1) = 0) SELECT hid AS name INTO #tt FROM x1 WHERE LEN(hid) = 5 ORDER BY hid

3.加入条件,找出满足要求的楼层安排

WITH x2   AS ( SELECT nameFROM  #ttWHERE SUBSTRING(name, 5, 1)  'A'--Baker 不住顶层  AND SUBSTRING(name, 1, 1)  'B'--Cooper不住底层  AND ( SUBSTRING(name, 1, 1)  'C'AND SUBSTRING(name, 5, 1)  'C'--Fletcher 既不住顶层也不住底层   )  AND name LIKE '%B%D%'--Miller住得比Cooper高  AND name NOT LIKE '%CE%' AND name NOT LIKE '%EC%' --Smith住的楼层和Fletcher不相邻  AND name NOT LIKE '%BC%' AND name NOT LIKE '%CB%' --Fletcher住的楼层和Cooper不相邻),  x3--生成楼层号   AS ( SELECT number AS id ,  SUBSTRING(x2.name, number, 1) AS nameFROM  master.dbo.spt_values  INNER JOIN x2 ON 1 = 1WHERE type = 'P'  AND number = 5  AND number = 1) SELECT a.id AS 楼层,   b.realname AS 姓名 FROM x3 a   INNER JOIN ttb b ON b.subname = a.name ORDER BY id

楼层安排如下:

通过以上的代码的介绍,希望对大家的学习有所帮助。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1590120.html

延伸阅读
单表查询是相对多表查询而言的,指从一个数据表中查询数据。 4.2.1 查询所有的记录 在执行输入select * from scott.emp,然后单击按钮,出现如图4.3所示的emp数据表所有记录。 :\第4章\4.2\421.sql。 select * from 数据表,这里的*代表数据表中所有的字段。 4.2.2 查询所有记录的某些字段 在输入select ...
标签: SQLServer
SQL Server复制是从一个源数据库将数据分配到企业内一个或多个目的数据库的过程。这个过程由数据库管理员建立并由数据库引擎自动维护。SQL Server 2000企业管理器中包含一些相对简单而直接的向导,它们将帮助你完成建立过程。但是,我们推荐一些与核心复制概念有关的信息。 为何使用复制? 复制可用于许多方面。例如,复制是维护报告服务器...
《真的3分钟推理》攻略 全24题答案解答(一) 1:闺房。 答案:凶手是亨利,因为史班克会偷,乔很宠爱艾米,女仆没有勒死她的和弄坏鸟笼的力道。 2:纸片谜团。 答案:罗莉的丈夫有杀人动机,他从罗莉晚宴包中起得票根找到卡特的住宿旅馆,并在卡特的房里找到同样的票根,由...
标签: 分娩
学龄前儿童的思维特点是具体形象性,抽象逻辑思维还处于萌芽状态。怎样针对这种特点培养孩子的判断推理能力呢? 首先,要注意扩大孩子的眼界,不断丰富孩子的感性知识和经验,以促进孩子判断推理能力的发展 。幼儿的生活经验狭窄,思维的特点是具体形象性。所以,幼儿掌握概念, 判断事物,必须从充分感知、获得...
如何利用WPS书签来进行快速定位   我们在阅读文档的时候,遇到一些不重要的地方,往往都会跳过,直接去重要的地方看,获取自己想要的信息。这个时候要怎么办呢? 当然,这时就需要用到书签功能了,它比一般的查找更加实效,一般的查找只能搜索关键字,而不能整个段落,这大大降低了阅读的效率,而且重复的关键字还要一个一个往下...

经验教程

335

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部