CI框架join多表联合查询的例子

mysql中join用法

内连接

1.概念:内联接是用比较运算符比较要联接列的值的联接

2.内连接:join 或 inner join

3.sql语句

select * from table1 join table2 on table1.id=table2.id

-------------结果-------------

idnameidscore

------------------------------

1lee190

2zhang2100

------------------------------

注释:只返回符合条件的table1和table2的列

 4.等价(与下列执行效果相同)

A:select a.*,b.* from table1 a,table2 b where a.id=b.id

B:select * from table1 cross join table2 where table1.id=table2.id (注:cross join后加条件只能用where,不能用on)

ci中join用法

那么在ci中又会有什么区别呢

例:用 A表中的每个ID 去查询这个 ID 在 people 表中的信息

$this->db->from('A');
$this->db->join('B', 'sites.id = B.id');

用 A表中的每个ID 去查询这个 ID 在 B表中的信息。 注意SQL的约定,如果一个列名在二张表中是重复的,你需要在列名前加上表名和一个"."号。因此sites.id在位置桌子中意谓id所在的表是sites。在进行SQL多表查询时,最好把列名进行唯一性的标识,这样可以避免产生岐义,也可以让你自己明了。

如:你执行以下语句

$this->db->select('*');
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');
$query = $this->db->get();

相当于 执行这条sql语句

SELECT * FROM blogs JOIN comments ON comments.id = blogs.id

如果你想要在查询中使用多个连接,可以多次调用本函数。

如果你需要指定 JOIN 的类型,你可以通过本函数的第三个参数来指定。可选项包括:left, right, outer, inner, left outer, 以及 right outer.

$this->db->join('comments', 'comments.id = blogs.id', 'left');

// 生成: LEFT JOIN comments ON comments.id = blogs.id

时间: 2024-10-08 11:55:38

CI框架join多表联合查询的例子的相关文章

SQL INNER JOIN两表联合查询用法

INNER JOIN(等值连接) 只返回两个表中联结字段相等的行 在表中存在至少一个匹配时,INNER JOIN 关键字返回行. INNER JOIN 关键字语法  代码如下 复制代码 SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name 注释:INNER JOIN 与 JOIN 是相同的. LEFT JOIN(左联接) 返回

PostgreSQL FULL JOIN 多表联合查询

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行. FULL JOIN 关键字语法 SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name 注释:在某些数据库教程中, FULL JOIN 称为 FULL OUTER JOIN.   postgres=# postgres=# CREATE TABLE t1 ( post

cakephp2.X多表联合查询join及使用分页查询的方法

本文实例讲述了cakephp2.X多表联合查询join及使用分页查询的方法.分享给大家供大家参考,具体如下: 格式化参数: public function getconditions($data){ $this->loadModel("Cm.LoginHistory"); $conditions = array(); foreach ($data as $key=>$val){ if($key=='start_date'){ $conditions['LoginHistor

ThinkPHP多表联合查询的常用方法_php实例

ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示: 1.原生查询示例: 复制代码 代码如下: $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.',

mysql-PHP MYSQL 两表联合查询问题

问题描述 PHP MYSQL 两表联合查询问题 现在有两个表,第一个201411,第二个user_list, 第一个是存放用户相关的数据,第二个是存放登录用户名和密码的信息. 他们有一个共有的字段:username, 现在要如何才能调用和显示在登陆了user_list的账号(username)的201411这张表里面的其他信息. 解决方案 SELECT T2.* FROM user_list T1 INNER JOIN 201411 T2 ON T1.username = T2.username

sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解

问题描述 sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解 我在C#的winform的DataGridView中显示联合查询的结果,下面就是4张表的联合查询的语句,我需要在DataGridView显示的表中做删除操作,只需要知道删除的sql语句就行,用存储过程也好,级联删除也好,希望详细,我已经在这个问题上困扰很久了,万分感谢! 解决方案 在做C#桌面程序时,我们通常会遇到删除dataGridview中选中的一和或都多行数据,在网上查了好多方法,有些只能删除dataGridv

sql-SQL 三张表联合查询中间表有空字段的问题

问题描述 SQL 三张表联合查询中间表有空字段的问题 table1(id1).table2(id2id1no).table3(noname)select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no第2张表里面对应的no字段有可能为空,为空的时候就取不到name而不是取no为空的name字段 解决方案

sql-SQL 三张表联合查询其中表有空字段的问题

问题描述 SQL 三张表联合查询其中表有空字段的问题 table1(id1).table2(id2id1no).table3(noname) select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no 第2张表里面对应的no字段有可能为空,为空的时候name就为空,这个要怎么查询才不会有冗余,请指教

详解Mysql多表联合查询效率分析及优化_Mysql

1. 多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2         由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢