繁体   English   中英

Yii选择多个条件表

[英]Yii select with multiple tables with conditions

我是yii的新手,如何使用yii进行此查询?

查询是:

从table1,table2,table3中选择table1.userid作为userid,table2.name作为用户名,table3.name作为游览名称,其中table1.userid = table2.id和table1.tid = table3.id按table1.weight,table1.result排序

谢谢莱斯利

您也可以为此使用Yii的查询生成器

它看起来像这样:

$results = Yii::app()->db->createCommand()
    ->select('t1.userid as userid,t2.name as username,t3.name as tourname')
    ->from('table1 t1')
    ->join('table2 t2','on'=> 't1.userid=t2.id') // could be ->leftJoin() as well
    ->join('table3 t3,'on'=>'t1.tid=t3.id')
    ->order('t1.weight,t1,result')
    ->queryAll()

请注意,我使用联接而不是在where子句中命名两个表。 这是在SQL中执行关系查询的两种不同方式。 您的方法称为隐式联接,而我的方法称为 式联接

我曾经写隐式联接,但是现在我主要使用显式联接,因为它们易于维护,读取和更改(如果需要)。

有关CDBCommand的更多信息,请参见此处。

伊涅萨是正确的。 这个问题最直接的答案是:

Yii::app()->db->createCommand("select table1.userid as userid, table2.name as username, table3.name as tourname from table1, table2, table3 where table1.userid=table2.id and table1.tid=table3.id order by table1.weight, table1.result")->queryAll();

但是我认为您应该利用Yii的人际关系能力,以便可以更好地访问此信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM