php - 为 symfony 中使用的表构建一个带有连接的 mysql 查询

标签 php mysql sql symfony

数据库结构:

DB Struct

数据库描述

一个公司可以有评论(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/

相关文章:

php - mysql数组插入重复字段数组

php - 在 $.ajax jQuery 中返回 false 成功

mysql - SQL:从列中提取特定文本到新列中

sql - PostgreSQL:INSERT INTO 语法错误

sql - 比较两个 T-SQL 表的差异

MySQL ORDER BY 另一个表的列名

php - Apache2 上的 nextcloud : Request Entity Too Large

javascript - 如何在 jQuery 中比较 Div 的值

mysql - 是的,另一个 MySql : ERROR 1045 (28000): Access denied for user 'root' @'localhost' (using password: YES)

php - MySQL SELECT 返回旧值