php实现多表(四表)连接
<?php include_once "DBHelper.php";
define('HOST', '127.0.0.1');
define('USER', 'root');
define('PASSWORD', '');
define('DBNAME', 'sxbcms'); /*define('HOST', '120.25.144.215');
define('USER', 'root');
define('PASSWORD', '88ac86754a');
define('DBNAME', 'sxbcms');*/ class student extends DBHelper{ function __construct()
{
parent::__construct();
} public function students(){
$sql = "select user.id , user.mobile ,name, sex, user.birthday ,area, user.email, `fgraduate` from hr_users user left join hr_student on user.id = hr_student.user_id where user.usertype =1 ";
$ret = $this->find($sql);
return $ret;
} //获取最高的学位 limit 1
public function edu($user_id){
$sql = "select `user_id`, `fdegree`, `grade` , `fschool` , `fmajor` from hr_student_eduexp where user_id = $user_id order by fdegree desc limit 1";
//echo $sql;
$ret = $this->find($sql);
return $ret;
} public function citys(&$data){
$sql ="select * from hr_city ";
$ret = $this->find($sql);
$temp = [] ;
foreach ($ret as $key => $value) {
$temp[$value['id']] = $value['cityname'];
}
foreach($data as $key=>$value){
$city = $value['area'];//获取area 的id
if(isset($temp[$city]))
{
$data[$key]['citys']=$temp[$city];
unset($data[$key]['city']);
}
}
} public function csv($file,$list)
{
$fh = fopen($file,'w') or die("Can't open file.csv"); foreach ($list as $sales_line) {
if (fputcsv($fh, $sales_line) === false) {
die("Can't write CSV line");
}
}
fclose($fh) or die("Can't close file.csv"); }
} $stu = new student();
$listStu = $stu->students();
foreach ($listStu as $key => $value) {
$user_id = $value['id'];//获取用户的id
if(!empty($user_id)){
$eduStu = $stu->edu($user_id);
/*echo "<pre>";print_r($eduStu);echo "</pre>";*/
//根据user_id遍历教育经历,过滤掉为空的教育经历
if(is_array($eduStu)){
foreach ($eduStu as $edu) {
$listStu[$key]['fdegree'] = $edu['fdegree'];
$listStu[$key]['grade'] = $edu['grade'];
$listStu[$key]['fschool'] = $edu['fschool'];
$listStu[$key]['fmajor'] = $edu['fmajor'];
}
}
}
} $stu->citys($listStu);
$stu->csv("student123.csv", $listStu); ?>
DBhelper.php
<?php
header("Content-type:text/html;charset=utf-8"); class DBHelper{ protected $conn; function __construct()
{ $this->InitConn(); } private function InitConn()
{ $this->conn = new mysqli(HOST, USER, PASSWORD, DBNAME); if ($this->conn->connect_errno) { printf("Connect failed: %s\n", $this->conn->connect_error); exit(); } $this->conn->query("set names utf8"); } public function changeDb($user, $pass, $ip, $db)
{ $this->conn = new mysqli($ip, $user, $pass, $db); if ($this->conn->connect_errno) { printf("Connect failed: %s\n", $this->conn->connect_error); exit(); } $this->conn->query("set names utf8"); } public function Execute($sql)
{
echo $sql."\n\n";
return $this->conn->query($sql); } public function find($sql)
{ $ret = []; $list = $this->conn->query($sql); while ($row = $list->fetch_array(MYSQLI_ASSOC)) { $ret[] = $row; } return $ret; } public function findOne($sql)
{ $list = $this->conn->query($sql); $row = $list->fetch_array(MYSQLI_ASSOC); return $row; } public function Save($table ,$data)
{
$sql ="insert into $table set ";
foreach ($data as $key => $value) {
$data[$key] = addslashes($value);
}
foreach ($data as $key => $value) {
$sql =$sql ."`".$key."`='". $value ."',";
}
$sql = substr($sql,,count($sql)-);
echo $sql."\n";
return $this->conn->query($sql);
} public function Close()
{ $this->conn->close(); } public function executesql($sql)
{
return $this->conn->query($sql);
} }
举例子
<?php include_once "DBHelper.php";
define('HOST', '120.25.144.215');
define('USER', 'root');
define('PASSWORD', '88ac86754a');
define('DBNAME', 'sxbcms'); /*
自己注册企业列表 */ /**
*
*/
class enterprise extends DBHelper
{ function __construct()
{
parent::__construct();
} public function listEnt()
{
$sql = "select hr_company.id , comfullname ,email ,mobile ,scale ,industry,mainproduct,enterprise ,hr_users.id as user_id from hr_company left join hr_users on hr_company.user_id = hr_users.id
where user_id not in (select user_id from hr_edit_create_company)"; $ret = $this->find($sql);
return $ret;
} /*
发不过的职位总数 */ public function jobs()
{
$sql ="select count(*) as ct ,user_id from hr_job where addtime > '2016-01-01' and addtime < '2016-09-30' group by user_id" ;
$ret = $this->find($sql);
$temp =[];
foreach ($ret as $key => $value) {
$uid = $value['user_id'];
$temp[$uid] = $value['ct'];
} return $temp; } public function citys(&$data)
{
$sql ="select * from hr_city ";
$ret = $this->find($sql);
$temp = [] ;
foreach ($ret as $key => $value) {
$temp[$value['id']] = $value['cityname'];
}
foreach($data as $key=>$value){ $provinces = $value['provinces'];
$city = $value['city'];
if(isset($temp[$provinces]))
{
$data[$key]['pro']=$temp[$provinces];
$data[$key]['citys']=$temp[$city];
unset($data[$key]['provinces']);
unset($data[$key]['city']);
} } } //设置行业
public function injertindustry(&$data)
{
$sql ="select * from hr_industry";
$ret = $this->find($sql);
$temp = [] ;
foreach ($ret as $key => $value) {
$temp[$value['id']] = $value['name'];
}
foreach ($data as $key => $value) {
$industry =$value['industry']; if(isset($temp[$industry])){
$name =$temp[$industry];
$data[$key]['industry_name'] = $name;
}else
{
$data[$key]['industry_name'] =""; }
}
} public function Position(&$data)
{
$sql ="select * from hr_position";
$ret = $this->find($sql);
$temp = [] ;
foreach ($ret as $key => $value) {
$temp[$value['id']] = $value['name'];
}
foreach ($data as $key => $value) {
$jobtype =$value['jobtype']; if(isset($temp[$jobtype])){
$name =$temp[$jobtype];
$data[$key]['jobtype'] = $name;
}else
{
$data[$key]['jobtype'] =""; }
} } /*
职位的投递量
*/
public function listJobBYCompany()
{
//获取全部的job-id和对应的company
$sql = "select user_id ,id from hr_job";
$ret = $this->find($sql); $sql = "select count(*) , jobid from hr_action group by jobid ";
$list = $this->find($sql); $temp =[];
foreach ($list as $key => $value) {
$jobid =$value['jobid'];
$temp[$jobid] =$value;
} foreach ($ret as $key => $value) {
$jobid =$value['id'];
$ret[$key]['total'] =$temp[$jobid];
} return $temp; } public function listContainJob($user_id,$email=null ,$name=null)
{
$sql = "select id , title,num ,addtime ,provinces ,city,jobtype ,viewnum from hr_job where user_id=".$user_id;
$list = $this->find($sql);
foreach ($list as $key => $value) {
$jobid =$value["id"];
$sql = "select count(*) as ct from hr_action where jobid=".$jobid;
$ct = $this->findOne($sql);
$list[$key]['deliver'] = $ct['ct'];
$list[$key]['email'] = $email;
$list[$key]['name'] = $name;
$sql = "select count(*) as ct from hr_action where jobid=".$jobid ." and open_viwe = 1";
$ct = $this->findOne($sql);
$list[$key]['resumeviewn'] = $ct['ct'];
}
return $list;
} public function csv($file,$list)
{
$fh = fopen($file,'w') or die("Can't open file.csv"); foreach ($list as $sales_line) {
if (fputcsv($fh, $sales_line) === false) {
die("Can't write CSV line");
}
}
fclose($fh) or die("Can't close file.csv"); } } $ent= new enterprise();
$list = $ent->listEnt();
$jobs =$ent->jobs();
foreach ($list as $key => $value) {
$uid = $value['user_id'];
if(isset($jobs[$uid])){
$list[$key]['total'] = $jobs[$uid];
}else
{
$list[$key]['total'] = ;
} }
$ent->injertindustry($list);
$jobs =[];
foreach ($list as $key => $value) {
$uid = $value['user_id'];
if(intval($uid)>){
$email =$value['email'];
$name =$value['comfullname'];
$li = $ent->listContainJob($uid,$email ,$name);
if(!empty($li))
{
foreach($li as $item)
{
array_push($jobs, $item);
}
}
} } $ent->citys($jobs);
$ent->Position($jobs);
$ent->csv("ent.csv", $list);
$ent->csv("jobs.csv", $jobs);
php实现多表(四表)连接的更多相关文章
- 数据库SQL Server2012笔记(四)——多表查询、子查询、分页查询、用查询结果创建新表和外连接
1.多表查询 1)笛卡尔集: select * from 表名1,表名2 select * from 表名1.表名2 where 表名1.字段名=表名2.字段名 注: 若有两张表有同 ...
- iptable四表五链
链(内置): PREROUTING:对数据包作路由选择前应用此链中的规则: INPUT:进来的数据包应用此规则链中的策略: FORWARD:转发数据包时应用此规则链中的策略: OUTPUT:外出的数据 ...
- iptables四表五链及默认规则使用,
网络基础 TCP/IP模型: 应用层===传输层===网络层===数据链里层===物理层 数据封装: MAC帧头+IP报头+TCP/UDP报头===HTTP请求 数据帧 TCP/UDP报头: 随机产生 ...
- iptables详解(2):四表五链
关于iptables中“四表五链”,我们今天来好好唠唠: 1.表的概念: 我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而ip ...
- 1、架构--架构图、Iptables(简介、四表五链、流程图、使用、扩展模块)、包过滤防火墙
笔记 1.画架构图 2.Iptables 1.1 什么是防火墙 防止别人恶意访问. 1.2 防火墙种类 硬件防火墙 F5 软件防火墙 iptables firewalld 安全组 3.Iptables ...
- 浅谈Oracle表之间各种连接
Oracle表之间的连接分为三种: 1.内连接(自然连接) 2.外连接 2.1.左外连接(左边的表不加限制,查询出全部满足条件的结果) 2.2.右外连接(右边的表不加限制,查询出全部满足条件的结果) ...
- 无废话ExtJs 入门教程四[表单:FormPanel]
无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...
- Oracle 表三种连接方式(sql优化)
在查看sql执行计划时,我们会发现表的连接方式有多种,本文对表的连接方式进行介绍以便更好看懂执行计划和理解sql执行原理. 一.连接方式: 嵌套循环(Nested Loops (NL)) (散列)哈希 ...
- hadoop大数据处理之表与表的连接
hadoop大数据处理之表与表的连接 前言: hadoop中表连接其实类似于我们用sqlserver对数据进行跨表查询时运用的inner join一样,两个连接的数据要有关系连接起来,中间必须有一个 ...
- Oracle数据库(三)表操作,连接查询,分页
复制表 --复制表 create table new_table as select * from Product --复制表结构不要数据 在where后面跟一个不成立的条件,就会仅复制表的结构而不复 ...
随机推荐
- Octet string 解析
百度百科的 ASN.1 http://baike.baidu.com/view/26378.htm 什么是 octet string 结构化字节 怎么解析,这里有微软的解析方法 If the byte ...
- 【Remoting-4】
[服务对象三种激活方式的不同] [1]客户端激活方式 [A]对象的创建,对象方法的执行都是在远程服务端. [B]服务端为每一个客户端创建其专属的对象,为这个客户提供服务,并且保存状态 [C]可以从远程 ...
- Unicode-字符编码的历史由来(转)
http://www.nowamagic.net/internet/internet_CharsetHistory.php 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以 ...
- 【Lucene4.8教程之一】使用Lucene4.8进行索引及搜索的基本操作
在Lucene对文本进行处理的过程中,可以大致分为三大部分: 1.索引文件:提取文档内容并分析,生成索引 2.搜索内容:搜索索引内容,根据搜索关键字得出搜索结果 3.分析内容:对搜索词汇进行分析,生成 ...
- js 打开新页面 window.open()
利用js打开一个新页面,而不是一个新窗口. 在网上各种东西啊,蛋疼了半天,还白疼了.. 后来看到a标签有target属性,然后又发现window.open()的第二个参数是target,然后我笑了(e ...
- ButterKnife你需要知道的点
ButterKnife,这个方便findViewById而使用的库,无数的应用在使用它,以注解来实现的他,对应用的性能影响几乎可以忽略,可以放心使用. 使用: compile 'com.jakewha ...
- ORACLE CASE函数 .
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- PHP基础温习之echo print printf sprintf print_r var_dump的用法与区别
一.echoecho() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并不 ...
- nginx请求体读取(二)
2,丢弃请求体 一个模块想要主动的丢弃客户端发过的请求体,可以调用nginx核心提供的ngx_http_discard_request_body()接口,主动丢弃的原因可能有很多种,如模块的业务逻辑压 ...
- gdal读写图像分块处理(精华版)
一.gdal进行数据操作在安装好gdal后,即可调用gdal库中的函数.(需要包含的头文件:gdal_priv.h)1.打开数据集使用gdal库进行数据(影像)操作的第一步就是打开一个数据集.对于“数 ...