SQL排序查询

1.建一张客户表,包含客户名称,联系人,电话号码,公司地址.

2.建一张订单表,包含订单编号,客户ID,供应商ID,订单金额,客户支付状态,供应商支付状态,订单日期.

3.建一张供应商表,包含供应商名称,联系人,电话号,供应商地址

View Code
 1 create table customer 
 2 (
 3 customerID int primary key identity(1,1) ,
 4 customerName varchar(50),
 5 cuslinkMan varchar(50),
 6 customerPhone varchar(12),
 7 companyAdress varchar(100)
 8 )
 9 
10 create table supplier
11 (
12 supplierID INT primary key identity(1,1) ,
13 supplierName varchar(50),
14 supLinkeMan varchar(50),
15 supAdress varchar(100)
16 )
17 
18 create table orderForm
19 (
20 orderID int identity(1,1),
21 orderNum varchar(50),
22 customerID int,
23 supplierID int,
24 orderMoney decimal ,
25 custState int,
26 orderState int ,
27 orderTime datetime,
28 constraint pk_order primary key(orderID) ,
29 constraint fk_supplier foreign key(supplierID) references supplier(supplierID),
30 constraint fk_customer foreign key(customerID) references customer(customerID)
31 )
32 
33 insert into customer(customerName,cuslinkMan,customerPhone,companyAdress) values('太阳','刘敏','18762676815','无锡西区')
34 
35 insert into dbo.supplier(supplierName,supLinkeMan,supAdress) 
36 values('安泰','李丹','大连')
37 
38 
39 insert into dbo.orderForm(orderNum,customerID,supplierID,orderMoney,custState,orderState,orderTime) 
40 values('0001','1','1','10000','0','0','2012.12.21')

练习一:写存储过程,根据订单日期,客户,供应商来查询订单,包含客户,供应商名称,订单详细信息,订单日期可以为空,客户跟供应商可以全选.

View Code
 1 SET ANSI_NULLS ON
 2 GO
 3 SET QUOTED_IDENTIFIER ON
 4 GO
 5 
 6 create  PROCEDURE 订单查询
 7 
 8     @订单日期 datetime,
 9     @客户  varchar(50),
10     @供应商  varchar(50)
11 AS
12 BEGIN
13     SET NOCOUNT ON;
14 
15    
16     SELECT orderNum, C.customerName,S.supplierName ,orderMoney,custState ,orderState ,orderTime 
17     from dbo.orderForm O,dbo.customer  C,dbo.supplier S    
18     where 
19     C.customerID=O.customerID 
20     and S.supplierID=O.supplierID 
21     --判断O.orderTime 
22     and
23     (
24     
25     @订单日期 =''
26     or @订单日期 is null or O.orderTime = @订单日期 
27     )
28     and --判断客户
29     (
30        @客户='-1' or C.customerName=@客户     
31     )
32     and--判断供应商
33     (
34        @供应商='-1' or S.supplierName=@供应商
35     )    
36     
37 END 
38 GO
39 
40 EXEC 订单查询 '2012-12-21','星星','上海'

练习二:写存储过程,查询订单数最多的前3个客户的订单信息。

方法一:
ALTER PROCEDURE [dbo].[订单总数前三]
    
AS
BEGIN
        
    SELECT O.*
    from dbo.orderForm O
    where     
     O.customerID in
    (
    SELECT top 3  O.customerID -- ,COUNT(O.orderNum) as 'aaa'
    from dbo.orderForm O
    group by O.customerID
    order by COUNT(O.orderNum) DESC
    )
END
方法二:
CREATE PROCEDURE 订单前三
AS
BEGIN    
  select O.* from orderForm  O
join
(
select
   top 3  customerID
from(
   select customerID ,COUNT(orderNum) AS EE FROM dbo.orderForm GROUP BY customerID
) as TT order by EE desc
)as KK
on O.customerID = KK.customerID  
END
GO

练习三:写存储过程,查询订单金额最多的前3个客户的订单信息。

 

View Code
USE [test]
GO
/****** Object:  StoredProcedure [dbo].[订单金额前三]    Script Date: 12/26/2012 09:30:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GOALTER PROCEDURE [dbo].[订单金额前三]AS
BEGINSET NOCOUNT ON;-- Insert statements for procedure hereSELECT O.orderID,  C.customerID ,customerName,S.supplierName ,orderMoney,custState ,orderState ,orderTime from dbo.orderForm O,dbo.customer  C,dbo.supplier S    where C.customerID=O.customerID and S.supplierID=O.supplierID  and O.customerID in (SELECT top 3 O.customerID  --, sum(O.orderMoney)AS 订单总金额 from dbo.orderForm O    group by O.customerIDorder by sum(O.orderMoney) desc)
END

 

 

 

练习四:写sql,删除3条供应商数据,并且相应订单的供应商ID也置为null(这里应该是更新操作)

View Code
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GOCREATE PROCEDURE 删除供应商信息 -- Add the parameters for the stored procedure here@供应商1ID int,@供应商2ID int,@供应商3ID int
AS
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;-- Insert statements for procedure hereupdate dbo.orderFormset supplierID=null where supplierID=@供应商1IDor supplierID=@供应商2IDor supplierID=@供应商3IDdelete from dbo.supplier  where supplierID=@供应商1IDor supplierID=@供应商2IDor supplierID=@供应商3IDEND
GOexec 删除供应商信息 '2','3','4'

练习五:查询不存在供应ID的订单信息,用(not exits)

CREATE PROCEDURE  查询无供应商的订单信息AS
BEGINSET NOCOUNT ON;-- Insert statements for procedure hereSELECT * from orderForm A where  not EXISTS (select supplierID from dbo.supplier B where B.supplierID=A.supplierID)
END
GOexec 查询无供应商的订单信息

 

转载于:https://www.cnblogs.com/hucui/archive/2012/12/25/123hucuis.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php smarty框架案例,php封装的smarty类案例

这篇文章主要介绍了php封装的smarty类,针对Smarty的基本操作技巧进行了封装整理,具有一定参考借鉴价值,需要的朋友可以参考下具体如下:/*** Project: Smarty: the PHP compiling template engine* File: Smarty.class.php* SVN: $Id: Smarty.class.php 4848 2014-06…

使用pip安装BeautifulSoup4模块

1.测试是否安装了BeautifulSoup4模块 import bs4 print bs4 执行报错说明没有安装该模块 Traceback (most recent call last):File "D:\work_java\python\src\baike_spider\test.py", line 7, in <module>import bs4 ImportError: No module named bs4 2.使用p…

mysql8创建用户并授权_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接

作者&#xff1a;秦福朗爱可生 DBA 团队成员&#xff0c;负责项目日常问题处理及公司平台问题排查。热爱 IT&#xff0c;喜欢在互联网里畅游&#xff0c;擅长摄影、厨艺&#xff0c;不会厨艺的 DBA 不是好司机&#xff0c;didi~本文来源&#xff1a;原创投稿*爱可生开源社区出品…

ACM进阶

ACM队不是为了一场比赛而存在的&#xff0c;为的是队员的整体提高。大学期间&#xff0c;ACM队队员必须要学好的课程有&#xff1a;l C/C两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析除此…

[转 TDD] 如何坚持TDD:使用者出现的问题以及解决方案

原文地址&#xff1a;http://www.infoq.com/cn/articles/levison-TDD-adoption-strategy 转载于:https://www.cnblogs.com/cly84920/archive/2010/03/24/4426820.html

DP备份任务失败原因解析

以JDC为例&#xff0c;DP的备份任务失败troubleshooting流程为&#xff1a;1&#xff09;/etc/opt/omni/server/datalist下都是备份的job code。如果要查看一个job code&#xff0c;可以more 此文件夹下的某个datalist,输入如下&#xff1a;最上面的两个脚本pre和post&#xff…

mysql求表中年龄同张三,mysql子查询与连接查询

表结构以及数据&#xff1a;CREATE TABLEstudent (idint(11) NOT NULLAUTO_INCREMENT,namevarchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,ageint(11) NULL DEFAULT NULL,PRIMARY KEY(id) USING BTREE) ENGINE InnoDB AUTO_INCREMENT 13 CHARACT…

jenkins war包_Jenkins的安装和部署(jenkins教程)

一、jenkins的下载、安装以及环境的搭建部署。1.什么是jenkins以及它的作用&#xff1a;Jenkins 是一个可扩展的持续集成&#xff08;CI&#xff09;平台。它只是一个平台&#xff0c;真正运作的都是插件。Jenkins的主要作用&#xff1a;持续的监控软件版本发布/测试项目。监控…

.net Web网站转换成Web应用程序 备忘

1.新建Web应用程序&#xff0c;把Web网站代码全部粘贴进来2.添加所有原来引用3.【*】Web应用程序不再自动预编译App_Code文件夹&#xff0c;但是会编译任何文件夹下的类文件(除App_Code),所有给App_Code文件夹换个其它名字。4.【*】把第3部改名后文件夹下的所有文件&#xff0c…

div没有设置高度,背景颜色却无法显示

在设计网页时&#xff0c;设置了div为自动高度或不给height值&#xff0c;当div设置背景时在IE6可以显示背景颜色&#xff0c;但是IE7,8却不显示。 解决办法如下&#xff1a; 1、把height:auto;改成height:100%; overflow:hidden; 原理&#xff1a;IE6可以再不给高度的情况下自…

内存恶鬼drawRect

转载于:http://bihongbo.com/内存恶鬼drawRect 标题有点吓人&#xff0c;但是对于drawRect的评价倒是一点都不过分。在平日的开发中&#xff0c;随意覆盖drawRect方法&#xff0c;稍有不慎就会让你的程序内存暴增。下面我们来看一个例子。 去年的某天午后&#xff0c;北京的雾霾…

c#和python同一主机直接udp_为什么Python 如此之慢

原文:https://hackernoon.com/why-is-python-so-slow-e5074b6fe55b​hackernoon.comPython 正在爆炸般流行起来&#xff0c;它被用于DevOps, 数据处理&#xff0c;web开发和安全领域。但是在速度方面却没有取得过什么胜利。 Java在速度方面和C/C/C#/Python比起来如何&#xff…

matlab编程ode45,matlab 中ode45的源代码如何看懂

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求常微分方程的数值解 ode45方法的源代码怎么看懂呢&#xff1f;四百多行 如何理解这些代码的核心思想 以方便未来自己使用呢&#xff1f;求大神指点迷津 感激不尽function varargout ode45(ode,tspan,y0,options,varargin)%ODE45…

N2 API

非常详细的N2API文档&#xff0c;以及N2的Wiki和讨论区&#xff0c;特此贴出&#xff0c;以备参考。 参考:http://consultingblogs.emc.com/jamesbroome/archive/2009/04/24/why-i-like-n2-cms.aspx 转载于:https://www.cnblogs.com/chenjunsheep/archive/2010/03/25/1695300.…

C#第零篇

看看荒废的园子和无所作为的自己。真是坑了身边一大帮人。 C、C、C#都是知道语法&#xff0c;自己从来不敢认真地去编一下程啊。真是惭愧。不过现在觉得C#比较简单&#xff0c;就从这里从头开始。伤心啊。 现在没什么时间&#xff0c;大概一天可以有2个小时时间来学习。其它时间…

lldb 调试php,linux系统下如何在vscode中调试C++代码

本篇博客以一个简单的hello world程序&#xff0c;介绍在vscode中调试C代码的配置过程。1. 安装编译器vscode是一个轻量的代码编辑器&#xff0c;并不具备代码编译功能&#xff0c;代码编译需要交给编译器完成。linux下最常用的编译器是gcc&#xff0c;通过如下命令安装&#x…

MyBatis之八:需要说明的几个java api的生命周期以及封装

学习mybatis不得不了解SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession。这里主要是讲解它们的生命周期以及一般最佳实践。 一般来说对象的生命周期也就是对象创建到销毁的过程&#xff0c;如果在这个过程中&#xff0c;如果实现的代码质量不佳&#xff0c;那么很容易…

.Net如何统计在线人数

统计在线用户的作用不言而喻&#xff0c;就是为了网站管理者可以知道当前用户的多少&#xff0c;然后根据用户数量来观察服务器或者程序的性能&#xff0c;从而可以直观的了解到网站的吸引力或者网站程序的效率现在&#xff0c;我们就介绍一个简单明了的方法来统计在线用户的多…

EFI BIOS下的磁盘管理工具Diskpart,Efifmt与Efichk(转)

Diskpart.efi GPT分区格式工具下载&#xff1a; EfiDiskUtility v1.3(X64).rarhttp://pan.baidu.com/share/link?shareid174670&uk3204866771 EFI BIOS作为一种创新的BIOS架构,自然有其独特之初,今天我给大家一下运行在EFI Shell环境下几款由Microsoft开发的磁盘管理工具.…

php负责传递数据,php传递数据的方法有哪些

php传递数据的方法有哪些发布时间&#xff1a;2021-03-19 09:10:54来源&#xff1a;亿速云阅读&#xff1a;58作者&#xff1a;小新这篇文章将为大家详细讲解有关php传递数据的方法有哪些&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家做个参考&#xff0c;希望大家阅…