三表左连接查询的sql语句写法_数据库其它

今天要查询所有realname的username,psw,gname,tel
表结构:
表t1
字段名:t1_id,username,psw
表t2
字段名:t2_id,gname,t1_id //这里一个t1_id对应多个t2_id
t3
字段名:t3_id,realname,tel,t1_id //这里一个t1_id对应一个t3_id
遇到的麻烦是当一个realname在t2表中没有内容时,也要将此realname的username,psw,tel等显示出来,直接使用
sql="select username,psw,gname,tel from t1,t2,t3 where t1.t1_id=t2.t1_id and t1.t1_id=t3.t1_id"
得到的结果是:t2表中必须有某个realname的作品,才能查询出来他的信息,这肯定不是想要的结果,最后想到使用左连接,sql语句是:
sql="select username,psw,gname,tel from (t1 left join t2 on t1.t1_id=t2.t1_id) left join t3 on t1.t1_id=t3.t1_id"
这样就得到想要的结果了。

时间: 2024-11-03 13:13:14

三表左连接查询的sql语句写法_数据库其它的相关文章

在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句写法_数据库其它

今天在写程序的时候,需要生成从开始id到结束id的sql语句.原来不需要这个功能现在就需要了. 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写? 如:在SQL SERVER中查询数据库中第10条至30条之间的数据SQL语句如何写? ------解决方案-------------------- select top 20 * from 表 where id in (select top 30 id from 表 order by id)order by id desc

Mssql,Access的sql经典SQL语句大全_数据库其它

下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建 数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份

access mysql mssql 随机 10条数据的sql语句[原创]_数据库其它

access 随机 10条数据的方法 复制代码 代码如下: select * from table order by rnd(id) 其中rnd(id)中的id为表中的自增长字段access随机显示记录(不重复)解决方案 复制代码 代码如下: <% '-------------------------数据库连接----------------------- Set objConn = Server.CreateObject("ADODB.Connection") objConn.

SQL语句学习_数据库其它

(高手就不要笑话了^_^). 好了,其他的不说现在就开始: select 子句主要决定了从表中取出的列名,列数以及列的显示顺序等信息,"*"表示查询所有的列,有关select的用法应该结合其它子句的用法. 1.from 子句: ①from子句用于指定被查询的表,试图或快照. ②如果指定多个实体,用逗号讲它们分割.为了查询方便,特别是进行自连接查询时,可以给表起别名.(这里我要说很多刚开始使用sql的朋友开始的时候总觉得这个很简单,没有什么可学的,可是到后来在做一些复杂的sql的时候总是

比较实用SQL语句总结_数据库其它

id name  1 a  2 b  3 c  1 a  2 b  3 c  以下的sql语句都以上面表mytable为准: 1.查询id=1,3记录的所有数据 select * from mytable where id in(1,3) 2.删除id重复的数据,表中数据只剩下id=1,2,3的所有数据 select * into # from mytable truncate table mytable insert table select distinct * from #  select

Sql Server 和 Access 操作数据库结构Sql语句小结_数据库其它

下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助.内容由海娃整理,不正确与不完整之处还请提出,谢谢. 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default '默认值' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6]

查询多对多sql语句写法 悬赏190 请人帮帮忙!! 急啊、、

问题描述 查询多对多sql语句写法 悬赏190 请人帮帮忙!! 急啊.. 一个是众酬表,一个是会员表,还有个这两者的中间表. 会员可以参与多个众酬 众酬可以被多个会员参与 1.会员角度:会员登录,要查询当前所有的众酬列表并且标记哪些众酬当前会员已参与 2.众酬角度:进入某个众酬详情可罗列当前参与此众酬的会员列表 解决方案 这取决于众筹表怎么设计 解决方案二: select *,(select count(1) from 众筹会员表 where id=z.id) as canyu from 众筹表

sql语句写法问题‘“ ”“

问题描述 sql语句写法问题'" "" 求教为什么要这样写 为什么要写成 '" + name + "'为什么有加号,为什么双引号外面还要+个单引号 String sql = "select * from t where username = '" + name + "' and password = '" + passwd + "'"; String sql = "insert into

Oracle里的交叉SQL语句写法

oracle|语句 实例说明 资料表结构(红色为主键)==>主表:TEST_PART_COST_TAB(料号资料表)PART_NO  VARCHAR2(20)   PART_NAME  VARCHAR2(50)  从表:TEST_PART_COST_DT_TAB(料号成本资料表)PART_NO VARCHAR2(10) COST_ID VARCHAR2(5) COST NUMBER  数据==>主表资料: PART_NO  PART_NAME1 1000            name1000