数据库结构:
数据库描述
一个公司可以有评论(0,1或更多) 评论总是有reviews_item 所有reviews_item都有一个类别
问题
我需要 SQL 查询来创建具有reviews_items.value 的 AVG 值的“公司”列表,我需要它按此值设置顺序。即使对于某些“公司”,我没有任何“评论”,并且“reviews_items”comapny 应该在 AVG == 0 的列表中。 它应该只选择 active == 1 的公司并且(如果存在)审查 active==1
我的 slq 查询无法正常工作:
SELECT
c.name,c.logo,c.url,
AVG(ri.value) as avarage
FROM company c
LEFT JOIN reviews r ON r.company_id = c.id
LEFT JOIN reviews_items ri ON ri.review_id = r.id
LEFT JOIN category cat ON ri.category_id = cat.id
WHERE c.active = 1
GROUP BY c.id
我希望我的问题很清楚:)
PS。抱歉,如果我的语言(英语)不太好:D
最佳答案
首先,由于您没有从类别表中选择、聚合或检查任何内容,因此您可以省略 JOIN 到表类别。
之后,您应该修改 GROUP BY 子句。按您选择的所有未聚合的内容进行分组:c.name、c.logo、c.url 假设它们对于属于一个 ID 的所有记录始终相同。
相反,您也可以聚合字段,例如
SELECT
MIN(c.name), MIN(c.logo), MIN(c.URL)
...
并保留 GROUP BY 不变。
关于php - 为 symfony 中使用的表构建一个带有连接的 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113718/