sql三表连接查询 - 使用sqlite 演示
表;
人员表,职位表,部门表;
现在要做的是:列出所有人员,以及他们所属的部门和职位;
由于要列出tb_user中的每一条记录,需要用左连接查询。这里要连接3个表;
代码如下;
SELECT u.sName,p.sCaption,d.sCaption FROM tb_user AS u LEFT JOIN (tb_pos AS p LEFT JOIN tb_dpt AS d ON p.id_Dpt=d.id) ON u.id_Pos=p.id;
运行;
提示 p.sCaption ,没有此列;
检查一下sql;应该没错;
可能括号里面又有别名,这种sql写法,sqlite不能识别;
换个写法;
select tb_user.sName,tb_pos.sCaption, tb_dpt.sCaption FROM tb_user left join tb_pos on tb_user.id_Pos=tb_pos.id left join tb_dpt on tb_pos.id_Dpt=tb_dpt.id;
运行,结果有了;
外连接(OUTER JOIN)是内连接(INNER JOIN)的扩展。虽然 SQL 标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外连接(LEFT OUTER JOIN)。
参阅;
https://www.runoob.com/sqlite/sqlite-joins.html
全部的cmd操作如下;
Microsoft Windows [版本 6.1.7601]
Copyright (c) 2010 Microsoft Corporation. All rights reserved.
S:\6\sqlite>sqlite3 test1.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .database
seq name file
--- --------------- ----------------------------------------------------------
0 main S:\6\sqlite\test1.db
sqlite> create table tb_user (
...> id int primary key not null,
...> sName varchar(50),
...> id_Pos);
sqlite> create table tb_pos (
...> id int primary key not null,
...> sCaption varchar(50),
...> id_Dpt int);
sqlite> create table tb_dpt (
...> id int primary key not null,
...> sCaption varchar(50));
sqlite> .tables
tb_dpt tb_pos tb_user
sqlite> insert into tb_user (1,'李一一',2);
Error: near "1": syntax error
sqlite> insert into tb_user (1,"李一一",2);
Error: near "1": syntax error
sqlite> .shcema tb_user
Error: unknown command or invalid arguments: "shcema". Enter ".help" for help
sqlite> .schema tb_user
CREATE TABLE tb_user (
id int primary key not null,
sName varchar(50),
id_Pos);
sqlite> drop table tb_user;
sqlite> create table tb_user (
...> id int primary key not null,
...> sName varchar(50),
...> id_Pos int);
sqlite> insert into tb_user values (1,'李一一',2);
sqlite> insert into tb_user values (2,'王不二',3);
sqlite> insert into tb_user values (3,'孙六七',1);
sqlite> insert into tb_pos values (1, '经理', 0);
sqlite> insert into tb_pos values (2, '程序', 1);
sqlite> insert into tb_pos values (3, '', 1);
sqlite> insert into tb_dpt values (1, '设计部');
sqlite> insert into tb_dpt values (2, '运维部');
sqlite> select * from tb_user;
1|李一一|2
2|王不二|3
3|孙六七|1
sqlite> select * from tb_pos;
1|经理|0
2|程序|1
3||1
sqlite> select * from tb_dpt;
1|设计部
2|运维部
sqlite> SELECT u.sName p.sCaption d.sCaption FROM tb_user AS u LEFT JOIN (tb_pos
AS p LEFT JOIN tb_dpt AS d ON p.id_Dpt=d.id) ON u.id_Pos=p.id;
Error: near ".": syntax error
sqlite> SELECT u.sName p.sCaption d.sCaption FROM tb_user AS u LEFT JOIN (tb_pos
AS p LEFT JOIN tb_dpt AS d ON p.id_Dpt=d.id) ON u.id_Pos=p.id;
Error: near ".": syntax error
sqlite> SELECT u.sName p.sCaption d.sCaption FROM tb_user AS u LEFT JOIN (tb_pos
AS p LEFT JOIN tb_dpt AS d ON p.id_Dpt=d.id) ON u.id_Pos=p.id;
Error: near ".": syntax error
sqlite> SELECT u.sName,p.sCaption,d.sCaption FROM tb_user AS u LEFT JOIN (tb_pos
AS p LEFT JOIN tb_dpt AS d ON p.id_Dpt=d.id) ON u.id_Pos=p.id;
Error: no such column: p.sCaption
sqlite> .schema tb_pos
CREATE TABLE tb_pos (
id int primary key not null,
sCaption varchar(50),
id_Dpt int);
sqlite> select tb_user.sName,tb_pos.sCaption, id_Dpt.sCaption FROM tb_user left
join tb_pos on tb_user.id_Pos=tb_pos.id left join tb_dpt on tb_pos.id_Dpt=tb_dpt
.id;
Error: no such column: id_Dpt.sCaption
sqlite> select tb_user.sName,tb_pos.sCaption, tb_dpt.sCaption FROM tb_user left
join tb_pos on tb_user.id_Pos=tb_pos.id left join tb_dpt on tb_pos.id_Dpt=tb_dpt
.id;
李一一|程序|设计部
王不二||设计部
孙六七|经理|
sqlite>
sql三表连接查询 - 使用sqlite 演示相关推荐
- 浅谈sql之连接查询
SQL之连接查询 一.连接查询的分类 sql中将连接查询分成四类: 内链接 外连接 左外连接 右外连接 自然连接 交叉连接 二.连接查询的分类 数据库表如下: 1.学生表 2.老师表 3.班级表 表用 ...
- sql语句连接查询.
sql语句连接查询. 接触sql语句这么长时间了,牵涉到连接的时候,总是google别人的. 今天好好学学sql 的连接查询 准备工作 : mysql5.6 建表语句 查询语句 select p.id ...
- SQL多表查询:SQL JOIN连接查询各种用法总结
在实际应用中,大多的查询都是需要多表连接查询的,但很多初学SQL的小伙伴总对各种JOIN有些迷糊.回想一下,初期很长一段时间,我常用的似乎也就是等值连接 WHERE 后面加等号,对各种JOIN也是不求 ...
- SQL having 子句示例 - 使用Sqlite演示
HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用. HAVING 子句可以让我们筛选分组后的各组数据. 也就是说sql使用了聚合函数获取到数据 ...
- SQL 数据库 连接查询 变量、if else、while
一.连接查询:通过连接运算符可以实现多个表查询. 连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join on(左右连接) 2.uni ...
- SQL server连接查询
目录 前沿小补充 等值与非等值连接查询 自身连接 外连接 多表连接 前沿小补充 例3.48 查询平均成绩大于等于80分的学生学号和平均成绩 SELECT Sno,AVG(Grade) FROM SC ...
- Sql Server 连接查询
在操作数据库的时候,经常会使用到inner join,left join,right join,full join.今天用了一个简单的例子记录一下这几个的区别. 1 测试数据 为了方便测试,就不用搞那 ...
- SQL Server 连接查询(多表连接查询)
多表连接查询 1.查询的信息来源于多张表,则可以通过两两相连的方式建立多表连接查询 以下是正常多表查询语法,查询三张表的所有数据信息 2.简单多表查询要比多表查询写法更简单,效果是一样的, 简单多表查 ...
- SQL Server 连接查询(内连接查询)
内连接查询 1.内连接基于连接谓词on,它将两张表的列组合在一起,产生新的结果表 两个表的每一行连接列进行比较,如果满足连接谓词则会组合成一行数据 2.要想进行内连接查询,就必须有连接列,这样才能建立 ...
最新文章
- 老生常谈,正确使用memset
- 如何在linux操作系统中安装oracle数据库,并设置开机自启动
- 在云服务器搭建WordPress博客(六)发布和管理文章
- 通过反射突破访问修饰符,调用private私有的方法
- Android Studio-------添加按钮
- .net core @Html 自定义属性中包含特殊符号解决
- Android 编程下 Using ViewPager for Screen Slides
- (七)OpenCV | 色度图
- 【蓝屏解决】笔记本频繁蓝屏,错误代码IRQL_NOT_LESS_OR_EQUAL
- 数据显示 IT 工人结婚率并不低
- Python实现手机号自动判断男女性别
- 使用apt-get时可能报错:E: Could not perform immediate configuration on already unpacked 'mountall'.解决方法
- 计算机网络技术三级题库pdf,全国计算机等级考试三级网络技术上机考试题库.pdf...
- 21天设计Arm芯片|移知公开课
- 使用迅搜制作站内搜索引擎-整合篇
- Redis常用命令速查
- html圈c转义符,C 实用教程
- c语言文件备份,C/C++实现文件的备份
- 毕设 房地产客服管理系统论文
- Fedora 12详细安装设置Compiz+Emerald+AWN实现特效
热门文章
- 关于图像语义分割的总结和感悟
- 平方的观测值表概率_茆诗松的概率论与数理统计(第六章)
- 详细设计 存储分配_10k+点赞的 Spring Boot 后台管理系统竟然出了详细教程!爱了!...
- 正则中需要转义的特殊字符小结
- 施耐德PLC通过TcpUdpCommunication传输数据
- Chrome 技术篇-json查看,json格式化,JSONView插件
- Python 基础篇-whl文件怎么安装
- 升级版记事本 Notepad++
- java中substring函数
- opencv中图像的基本结构 类型的定义