在我的数据库中,每个用户可以为每门课程提交4种类型的费率。
我有一张table叫 course
这个表有一列名为 id
.
我还有一张table叫 rate_type
记录用户可以提交的4种速率
-------------
| id | type |
-------------
我还有一张table叫 rate
按以下结构记录用户提交的费率
----------------------------
| id | user_id | course_id |
----------------------------
我还有一张table叫 rate_value
使用以下结构记录每个课程和每个费率类型的用户费率值:
----------------------------------
| id | rate_id | value | type_id |
----------------------------------
这个 course_id
在 rate
与…有关 id
在 course
table。 user_id
的关系 rate
这并不重要。 rate_id
在 rate_value
与…有关 id
在 rate
table。 type_id
在 rate_value
与…有关 id
在 rate_type
表。(但这并不重要,因为费率类型对课程不重要,费率的绝对和很重要)。
现在我想把 course
从最高比率到最低比率的表格,但比率值在 rate
表格和每门课程都有许多记录 rate
表和排序的课程,我应该加上所有的费率的具体课程在 rate_value
根据每门课程的费率总和对课程进行表格和排序。
$query = Course::find()
->alias("t")
->where(["t.deleted" => 0])
->joinWith([
"rate"
]);
我应该补充什么 $query
按定义完成此查询。
这是我想用yii2模型运行的原始sql查询
SELECT t.id, t.title, SUM(rate_value.value) FROM `course` `t`
LEFT JOIN rate
ON rate.course_id = t.id
LEFT JOIN rate_value
ON rate_value.rate_id = rate.id
GROUP BY t.id
ORDER BY SUM(rate_value.value) DESC
update1:这个查询工作正常,但是当我将其他东西加入这个查询时,它将返回一个更大的sum值
1条答案
按热度按时间czfnxgou1#
假设模型关系声明为:
您可以通过以下方式生成此类查询:
显示结果: