Oracle:简单分析火车票余票查询和座位剩余
引用CSDN论坛上的一个问题,http://bbs.csdn.net/topics/392284590 ,开始思路错误,给了一个错误的答案,然后仔细分析了一下
题目如下:
假设有一个车次1经过5个站,站点1,站点2,站点3,站点4,站点5(另外有一个车次2,经过站点3,站点4,站点6)
有3个座位,座位1,座位2,座位3
有乘客,买了车次1 站点1到站点3的座位1,站点4到站点5的座位1,
站点2到站点4的座位2,站点1到站点2的座位3,站点3到站点5的座位3,
自己确定数据库表的结构
问:怎么查到站点3到站点4的车次信息,它的余票,哪个座位有余票
思路:创建三张表,分别如下
--座位信息表
drop table train_seat;
create table train_seat(
num varchar(6), --车次
seat_num varchar(10),--座位号
primary key(num,seat_num)
);
--站点信息表
drop table train_site;
create table train_site(
num varchar(6), --车次
site varchar(10),--站点
primary key(num,site)
);
----创建序列
create sequence train_order_seq
increment by 1
start with 1
maxvalue 10000
nominvalue
nocache
--订票信息表
drop table train_order;
create table train_order(
id int,
num varchar(6), --车次
site_start varchar(10),--起始站点
site_end varchar(10),--截止站点
isOrder int,--是否预定:0-否,1-是
seat_num varchar(10),--座位号
order_people varchar(10),--预定人
primary key(id)
);
插入数据:
INSERT INTO TRAIN_ORDER (ID, NUM, SITE_START, SITE_END, ISORDER, SEAT_NUM, ORDER_PEOPLE) VALUES (train_order_seq.nextval, '车次1', '1', '3', 1, '1', 'A');
INSERT INTO TRAIN_ORDER (ID, NUM, SITE_START, SITE_END, ISORDER, SEAT_NUM, ORDER_PEOPLE) VALUES (train_order_seq.nextval, '车次1', '4', '5', 1, '1', 'B');
INSERT INTO TRAIN_ORDER (ID, NUM, SITE_START, SITE_END, ISORDER, SEAT_NUM, ORDER_PEOPLE) VALUES (train_order_seq.nextval, '车次1', '2', '4', 1, '2', 'C');
INSERT INTO TRAIN_ORDER (ID, NUM, SITE_START, SITE_END, ISORDER, SEAT_NUM, ORDER_PEOPLE) VALUES (train_order_seq.nextval, '车次1', '1', '2', 1, '3', 'D');
INSERT INTO TRAIN_ORDER (ID, NUM, SITE_START, SITE_END, ISORDER, SEAT_NUM, ORDER_PEOPLE) VALUES (train_order_seq.nextval, '车次1', '3', '5', 1, '3', 'E');INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次1', '1');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次1', '2');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次1', '3');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次1', '4');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次1', '5');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次2', '3');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次2', '4');
INSERT INTO TRAIN_SITE (NUM, SITE) VALUES ('车次2', '6');
INSERT INTO TRAIN_SEAT (NUM, SEAT_NUM) VALUES ('车次1', '1');
INSERT INTO TRAIN_SEAT (NUM, SEAT_NUM) VALUES ('车次1', '2');
INSERT INTO TRAIN_SEAT (NUM, SEAT_NUM) VALUES ('车次1', '3');
INSERT INTO TRAIN_SEAT (NUM, SEAT_NUM) VALUES ('车次2', '1');
INSERT INTO TRAIN_SEAT (NUM, SEAT_NUM) VALUES ('车次2', '2');
INSERT INTO TRAIN_SEAT (NUM, SEAT_NUM) VALUES ('车次2', '3');
查询余票及剩余座位信息:
--查询哪个座位有余票
select A.num,A.seat_num from(
select s1.num,s1.seat_num,o1.id from train_seat s1 left join train_order o1 on s1.num = o1.num and s1.seat_num = o1.seat_num and o1.site_start <=3 and o1.site_end >=4) A
where A.id is null order by A.num
--查询余票数
select A.num,count(*) 余票 from(
select s1.num,s1.seat_num,o1.id from train_seat s1 left join train_order o1 on s1.num = o1.num and s1.seat_num = o1.seat_num and o1.site_start <=3 and o1.site_end >=4) A
where A.id is null group by A.num
Oracle:简单分析火车票余票查询和座位剩余相关推荐
- python爬虫实现火车票余票查询
python爬虫实现火车票余票查询 获取终端输入的命令行参数 重构请求url,解析返回的json数据 获取终端输入的命令行参数 例如:python3 tickets.py -dg 成都 南京 2016 ...
- 项目实战一 12306火车票余票查询软件
1.安装docopt.urllib.requests 2.实现程序基础框架 # -*- coding:utf-8 -*-""" Train tickets query p ...
- Python爬虫----12306火车票余票查询器
12306火车票余票查询器 文章同步更新:http://www.riba2534.cn/?p=305 今天写了一个12306火车票余票查询器的爬虫,在这里记录一下过程. 首先先看一下最终效果: 比如想 ...
- 实验楼 python 火车票余票查询
Python 实现火车票查询工具 核心的几个地方: 1:正则表达式的构建 2:json数据的解析 一.实验简介 当你想查询一下火车票信息的时候,你还在上 12306 官网吗?或是打开你手机里的 APP ...
- 12306火车余票查询
测试地址:http://gengjian.24.lc/japson/123060.htm 调用12306官网的查询接口. 123060.htm 火车票余票查询Demo By Genng.<br& ...
- 火车车次查询-余票查询--Api接口
1.来自12306的火车车次数据 使用12306网站的接口,查询余票.此接口采集自这里.全国火车站代号字典,下载 . 如有转载,请标明来自此出处http://blog.csdn.net/qxs9652 ...
- 列车车次查询-余票查询-Api接口
查接口找到的,分享给大家,希望对大家以后开发有用 火车车次查询-余票查询--Api接口 1.来自12306的火车车次数据 使用12306网站的接口,查询余票.此接口采集自这里.全国火车站代号字典,下载 ...
- 火车票查询系统(一)——利用python实现监控12306余票查询
最近春运高峰,本人从12月开始买过年回家的火车票,然鹅~现实总是那么残酷,放票时间记不住,要么就是不能实时盯着刷票,外面的软件也不知道靠不靠谱,反正是没买到票,所以一怒之下,自己做一个12306余票查 ...
- 火车票余票接口和火车票接口查询出来喽
火车票余票接口 经过本人无数次的尝试终于成功获取到12306官网的余票数据.
最新文章
- ASP.NET Core 2 学习笔记(四)依赖注入
- vs2008 C++ 没有找到MSVCR90D.dll 问题
- Flutter开发之布局-3-center(17)
- linux下获取本机的获取内网和外网地址
- Service的一些使用
- 【风控术语】数字金融反欺诈技术名词表
- 一直出现 Enter passphrase for key '/root/.ssh/gitkey12.pub'
- VS2010 C++下编译调试MongoDB源码
- Algs4-1.4.38 3-sum的初级算法与ThreeSum性能比较
- STM32之FSMC-SRAM/NOR原理
- PAT乙级(1008 数组元素循环右移问题)
- 离婚前一晚是什么心情呢?
- Linux 命令(63)—— nm 命令
- springboot 前缀_SpringBoot2.x 给Controller的RequestMapping添加统一前缀
- python中的怎么用,python中怎么用#号
- 计算机一直黑屏,电脑开不了机 一直黑屏 电源灯亮着 在线等
- silvaco学习之收敛
- 【Unity】OnePieceFTG(五)游戏流程
- 遍历vad二叉树来遍历进程里的模块
- stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)