sql两个表的组合查询以及yii下使用数据库查询

sql两个表的组合查询  使用 join on

例如:两个表查询:

select  u.username, t.title  from user u join task t on u.id = t.id; 

其中  user u 是用来把表名简化   join则是加入其他的表    on则是表示查询的条件   u.username 则是表示user表中的username字段

同样的道理  多表查询的原理也是一样的

这是sql语句:

select * from user u
join task t on u.id = t.id
join task_user tu on tu.id = t.id

这是在yii框架下面使用query查询的方法:

$query = new Query();
        $query->select('title,content,task.enable,task.id');
        $query->from('task');
        $query->leftJoin('task_user_rel', 'task.id= task_user_rel.task_id');
        $query->leftJoin('user', 'task_user_rel.user_id = user.id');
        $query->leftJoin('org_user_rel', 'user.id = org_user_rel.user_id');
        $query->leftJoin('org', 'org_user_rel.org_id =org.id');
        $query->where([
            'org.id' => $orgModel->id
        ]);
	$data = $query->all();
	$data = $query->one();

其实在yii框架下面有很多中进行数据库的查询的方法,比如说:

   $data = JdCrmSmsUserModel::find()->where([
            'vender_id' => [
               $venderId
            ]
        ])->all();

或者是采用findBySql(),findOne(),findAll()等,来替代使用find()来进行查询。

时间: 2024-08-09 04:41:59

sql两个表的组合查询以及yii下使用数据库查询的相关文章

SQL注入——知表名不知列明情景下查询数据

场景 有某些情况,可以查找到表名,但查找不到列名. MySQL < 5 或 web过滤 information_scema 详解 select `1` from (select 1,2,3,4,5,6,7,8,9,10,11,12,13 union select * from 表名)a limit 1,1 子查询中select的数目为列数. 通过列数 1,2,3... 再union带出整张表数据.这一步的目的是改变/替换字段名(替换为1,2,3,4...). 再通过select `1`带出第一列

sql 两张表关联修改数据

Hr_DepartPlanWeek 部门周计划表:DepartMent部门名称,DepartMentID部门ID. g_group部门表:gname部门名称,gid部门id 根据DepartMentID管理g_group表修改DepartMent update Hr_DepartPlanWeek set DepartMent=t.gname from (select gname,gid from g_group left join Hr_DepartPlanWeek on g_group.GId

sql两个表数据更新

一.当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰. 并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联! 1. update t1           set t1.c2 = t2.c2        from t2  where t1.c1 = t2.c1 2. Update t1           set t1.c2 = t2.c2  from t1 inner join t2     

ESQL查询之简单的Oracle数据库查询测试

操作Oracle数据库跟前边例子中操作其他数据库一样,同样是非常轻松的,略有不同的是SQL语法上的微小区别 查询 <ESql module=test id=datas><![CDATA[ Select STTP,STNM,STCD,PHCD from ST_STBPRP_B where rownum<=30 ]]></ESql> 定制显示字段名 <tr> <for end=0 [email protected]{datas:getWidth}&g

MySQL性能管理及架构设计(一):什么影响了数据库查询速度、什么影响了MySQL性能

一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS:是TransactionsPerSecond的缩写,也就是事务数/秒.它是软件测试结果的测量单位.客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数. Tips:最好不要在主库上数据库备份,

经验:什么影响了数据库查询速度、什么影响了MySQL性能 (转)

一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS:是TransactionsPerSecond的缩写,也就是事务数/秒.它是软件测试结果的测量单位.客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数. Tips:最好不要在主库上数据库备份,大型活动前

爆料:为什么Entity Framework不能进行跨数据库查询

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在上篇随笔中提到"对于跨数据库查询,我们没有找到通过LINQ to Entities实现的方法".后来仔细想想,从理论来讲,实现跨数据库查询应该不难啊,与非跨数据库查询相比,只是多了个数据库名,比如下面的非跨数据库查询语句: SELE

数据库---数据库查询的各种子句

基本查询 orderby子句 形式: order by 排序字段1 [排序方式], 排序字段2 [排序方式], ..... 说明: 对前面取得的数据(含from子句,where子句,group子句,having子句的所有结果)来指定按某个字段的大小进行排列(排序),排序只有2种方式: 正序: ASC(默认值),可以省略 倒序: DESC 如果指定多个字段排序(虽然不常见),则其含义是,在前一个字段排序中相同的那些数据里,再按后一字段的大小进行指定的排序. limit子句 形式: limit [起

调用DISCUZ 数据库查询方法进行数据库查询

<?php define('APPTYPEID', 5);//必须的,你懂的 define('CURSCRIPT', 'userapp');//必须的,你懂的 require_once './source/class/class_core.php';//必须的,你懂的 $discuz = & discuz_core::instance();//必须的,你懂的 $discuz->cachelist = $cachelist;//必须的,你懂的 $discuz->init();//必