mysql中的left join用法 (及多条件查询
来源:互联网 发布:男装淘宝店 编辑:程序博客网 时间:2024/06/05 11:25
语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的
名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
例子:
select m1.Matename,MapName,dict.Fieldname,DesinNum,e1.Realname as name1,e2.Realname as name2,ConstrProjName,ChgNum,projdesignmaterial.Savetime,Remarks,projdesignmaterial.ID,projdesignmaterial.ProjID from projdesignmaterial
left join material m1 on projdesignmaterial.MateID = m1.ID
left join dict on projdesignmaterial.Unit = dict.ID
left join employee e2 on projdesignmaterial.ConformID = e2.ID
left join constrproj on projdesignmaterial.ProjID = constrproj.ConstrProjID WHERE projdesignmaterial.ID = '$ID'
高级应用 A和B ,A和C 连接, 在中间也可进行B和C的左连接
SELECT u.mobile,t1.teamname,u.realname,u.address,u.regdate from team_users
left join users u on team_users.userID=u.userid
left join team t1 on team_users.teamid=t1.teamid
left join `match` m1 on t1.matchid=m1.matchidwhere u.usertype=1 and m1.matchid=2
多条件查询框查询
$sql = "select s.*, g.gradename,d.begindate from student as s left join grade as g on s.gradeid = g.gradeid
left join degrees as d on s.studentid = d.studentid where d.begindate like '%$begindate%' and s.studentname like '%$name%' and workcity like'%$city%' and mobile like '%$mobile%' and comfrom like '%$comfrom%' and degreename like '%$degreename%' ";
//echo $sql;
$query = $this->db->query("$sql");
return $query->result();
==========================另一种方法,判断分析where,从而实现 多条件查询 [where 1=1 是关键,首先给个真,然后其它字段不为空则 and 条件 and 条件 ]
<span style="font-size:14px;">$sqlwhere = "where 1=1";if( strlen($begindate)!=0 ){$sqlwhere = $sqlwhere. " and studentid in (select studentid from degrees where begindate like '%$begindate%')";}if( strlen($name) != "" ){$sqlwhere = $sqlwhere. " and studentname like '%$name%'";}if( strlen($thecity) != "" ){$sqlwhere = $sqlwhere. " and thecity = '$thecity'";}if( strlen($workplace) != "" ){$sqlwhere = $sqlwhere. " and workplace like '%$workplace%'";}if( strlen($mobile) != "" ){$sqlwhere = $sqlwhere. " and mobile like '%$mobile%'";}if( strlen($comfrom) != "" ){$sqlwhere = $sqlwhere. " and province like '%$comfrom%'";}if($wptype != ""){$sqlwhere = $sqlwhere. " and wptype = $wptype";}$sql = "select * from student ".$sqlwhere;//var_dump($sql); $query = $this->db->query($sql); return $query->result();</span>
=============================================================
多表查询,包含子查询。以及查询优化的写法,(用一个查询结果当成表。与其它表进行联合
参赛人数 需要统计,并没有直接的字段值对应
team表
public function getTeamList($teamname,$intStatus,$matchid,$is_abroad){$sql = "SELECT t.teamid, t.teamname, t.status, t.is_abroad, u.userid, u.realname, u.mobile, tu.num FROM team t LEFT JOIN users u on t.userID = u.userid LEFT JOIN (SELECT count(*) as num, teamid FROM team_users GROUP BY teamid) tu on t.teamid = tu.teamidWHERE t.matchid = ".$matchid;if($teamname!=""){$sql = $sql." and t.teamname LIKE '%".$teamname."%' ";}if($intStatus!=""){ $sql = $sql." and t.status in (".$intStatus.")";}if($is_abroad!=""){$sql = $sql." and t.is_abroad in (".$is_abroad.")";}$sql = $sql." ORDER BY t.teamname";//var_dump($sql); $query = $this->db->query($sql); return $query->result_array();}
查询优化:查询字段是查询 是字段,where是where,并在下边根据不同的条件拼接where , order放最后,再进行拼接。清晰明了
(SELECT count(*) as num, teamid FROM team_users GROUP BY teamid)为
--------------------------------------------------------------------------------------上边的应用例1
查询最后更新的时间 (不同组的更新时间
队伍的支付记录表。 现在要从中查询每个组的最后支付时间paytimeSELECT teamid,MAX(paytime) as paytime FROM payorder GROUP BY teamid
联合查询left join 一个查询结果集的表
//----------------查询处于不同状态的俱乐部--------------------------------public function getClubList($intStatus,$matchid){ $sql = "SELECT t.teamid, t.teamname, t.status, t.sign_up,t.examine_time,t.reg_time ,p.paytime, u.userid, u.realname, u.mobile, tu.num FROM team t LEFT JOIN users u on t.userID = u.userid LEFT JOIN (SELECT count(*) as num, teamid FROM team_users GROUP BY teamid) tu on t.teamid = tu.teamid LEFT JOIN (SELECT teamid,MAX(paytime) as paytime FROM payorder GROUP BY teamid) p on t.teamid = p.teamid WHERE t.matchid = ".$matchid; if($intStatus!=""){ $sql = $sql." and t.status in (".$intStatus.")"; } $sql = $sql." ORDER BY t.teamname"; $query = $this->db->query($sql); return $query->result_array(); }
- mysql中的left join用法 (及多条件查询
- tp 多条件查询 及 多表left join查询
- mysql中多个left join子查询写法以及别名用法
- MySQL多表连接查询Left Join,Right Join
- MySQL多表连接查询Left Join,Right Join
- 【转】MySQL多表连接查询Left Join,Right Join
- Mysql多表left join查询
- mysql多表连接查询inner join, left join , right join ,full join ,cross join
- left outer join 结合条件查询
- MySQL中Left Join用法
- Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化
- SQL中的left outer join,inner join,right outer join用法及区别
- SQL中的inner join on, left join on, right join on 及用法
- mysql left join,right join ,cross join inner join 用法
- mysql中left join on后面and和where条件查询的差异
- MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- shell编程中的find命令
- Linux下常用压缩格式的压缩与解压方法
- Hibernate注解实现一对一关联
- spring mvc搭建基本示例遇到的怪异问题及解决方法
- 【Android】Android中ContentProvider组件详解
- mysql中的left join用法 (及多条件查询
- 非阻塞socket服务器示例
- IOS 资料
- C++字符串操作
- 【深入浅出ios开发】UIActionSheet
- 实现一个最小栈的push(int x),pop(),top(),min()方法,要求都是常量时间
- setClickable(false)不起作用
- HDU4664
- 山寨版至理名言