[英]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.