使用统计查询关联3个或更多表

时间:2012-12-08 07:21:25

标签: php mysql phpmyadmin yii

我正在尝试使用统计查询来关联Yii中的3个表。我需要显示登录用户发布的每个请求的最低费率,其中“communications”= hai和“Country”=中国,其中通信和国家/地区是3个不同表的属性。我该如何实现呢?是否有任何方法可以在统计查询条件下添加AND / Or。我的代码如图所示..

   return array(                     
                         'serviceproposals' => array(self::HAS_MANY, 'Serviceproposal', 'ServiceRequestID'),
                         'user' => array(self::BELONGS_TO, 'Buyer', 'user_id'),
                         'postCount'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID'),
                         'maxvalue'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID','select'=>'MAX(proposal_amount)'),
                         'minvalue'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID','select'=>'MIN(proposal_amount)', 'condition' => 'Communications ="hai"'),
                    );

数据库:

User[user_id,name,password,Country],
Provider[user_id,providercompany,providerdetails],
Buyer[user_id,contactinfo],
ServiceRequest[ServiceRequestID,Buyer.user_id,details,date],
ServiceProposal[ServiceProposalId,ServiceRequestID,Provider.user_id,services,propsal_rate,Communications]

1 个答案:

答案 0 :(得分:0)

在Yii中,如果我们使用STAT查询,通常查询的性能会受到影响,因为STAT很慢。您可以在CDBCriteria选择选项中使用COUNT而不是添加关系,我们需要将该属性声明为模型 与Serviceproposal模型一样,您需要添加属性public $ postCount;所以你可以使用out out中的count值。