表;

人员表,职位表,部门表;

现在要做的是:列出所有人员,以及他们所属的部门和职位;

由于要列出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 演示相关推荐

  1. 浅谈sql之连接查询

    SQL之连接查询 一.连接查询的分类 sql中将连接查询分成四类: 内链接 外连接 左外连接 右外连接 自然连接 交叉连接 二.连接查询的分类 数据库表如下: 1.学生表 2.老师表 3.班级表 表用 ...

  2. sql语句连接查询.

    sql语句连接查询. 接触sql语句这么长时间了,牵涉到连接的时候,总是google别人的. 今天好好学学sql 的连接查询 准备工作 : mysql5.6 建表语句 查询语句 select p.id ...

  3. SQL多表查询:SQL JOIN连接查询各种用法总结

    在实际应用中,大多的查询都是需要多表连接查询的,但很多初学SQL的小伙伴总对各种JOIN有些迷糊.回想一下,初期很长一段时间,我常用的似乎也就是等值连接 WHERE 后面加等号,对各种JOIN也是不求 ...

  4. SQL having 子句示例 - 使用Sqlite演示

    HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用. HAVING 子句可以让我们筛选分组后的各组数据. 也就是说sql使用了聚合函数获取到数据 ...

  5. SQL 数据库 连接查询 变量、if else、while

    一.连接查询:通过连接运算符可以实现多个表查询. 连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on(左右连接) 2.uni ...

  6. SQL server连接查询

    目录 前沿小补充 等值与非等值连接查询 自身连接 外连接 多表连接 前沿小补充 例3.48 查询平均成绩大于等于80分的学生学号和平均成绩 SELECT Sno,AVG(Grade) FROM SC ...

  7. Sql Server 连接查询

    在操作数据库的时候,经常会使用到inner join,left join,right join,full join.今天用了一个简单的例子记录一下这几个的区别. 1 测试数据 为了方便测试,就不用搞那 ...

  8. SQL Server 连接查询(多表连接查询)

    多表连接查询 1.查询的信息来源于多张表,则可以通过两两相连的方式建立多表连接查询 以下是正常多表查询语法,查询三张表的所有数据信息 2.简单多表查询要比多表查询写法更简单,效果是一样的, 简单多表查 ...

  9. SQL Server 连接查询(内连接查询)

    内连接查询 1.内连接基于连接谓词on,它将两张表的列组合在一起,产生新的结果表 两个表的每一行连接列进行比较,如果满足连接谓词则会组合成一行数据 2.要想进行内连接查询,就必须有连接列,这样才能建立 ...

最新文章

  1. 老生常谈,正确使用memset
  2. 如何在linux操作系统中安装oracle数据库,并设置开机自启动
  3. 在云服务器搭建WordPress博客(六)发布和管理文章
  4. 通过反射突破访问修饰符,调用private私有的方法
  5. Android Studio-------添加按钮
  6. .net core @Html 自定义属性中包含特殊符号解决
  7. Android 编程下 Using ViewPager for Screen Slides
  8. (七)OpenCV | 色度图
  9. 【蓝屏解决】笔记本频繁蓝屏,错误代码IRQL_NOT_LESS_OR_EQUAL
  10. 数据显示 IT 工人结婚率并不低
  11. Python实现手机号自动判断男女性别
  12. 使用apt-get时可能报错:E: Could not perform immediate configuration on already unpacked 'mountall'.解决方法
  13. 计算机网络技术三级题库pdf,全国计算机等级考试三级网络技术上机考试题库.pdf...
  14. 21天设计Arm芯片|移知公开课
  15. 使用迅搜制作站内搜索引擎-整合篇
  16. Redis常用命令速查
  17. html圈c转义符,C 实用教程
  18. c语言文件备份,C/C++实现文件的备份
  19. 毕设 房地产客服管理系统论文
  20. Fedora 12详细安装设置Compiz+Emerald+AWN实现特效

热门文章

  1. 关于图像语义分割的总结和感悟
  2. 平方的观测值表概率_茆诗松的概率论与数理统计(第六章)
  3. 详细设计 存储分配_10k+点赞的 Spring Boot 后台管理系统竟然出了详细教程!爱了!...
  4. 正则中需要转义的特殊字符小结
  5. 施耐德PLC通过TcpUdpCommunication传输数据
  6. Chrome 技术篇-json查看,json格式化,JSONView插件
  7. Python 基础篇-whl文件怎么安装
  8. 升级版记事本 Notepad++
  9. java中substring函数
  10. opencv中图像的基本结构 类型的定义