SQL JOIN 多个表并获取 AVG

标签 sql join

我试图在我的 sql 查询中执行几个 JOINS,但遇到了问题。我需要做的是从poker_sites中选择所有字段然后从 networks 中获取 2 个相关字段如果可用,请从 editor_content 获取平均评级

我遇到的问题是查询只返回一行,而实际上应该至少有三行。

任何帮助将不胜感激。

这是我的 SQL

SELECT AVG(editor_content.rating) AS rating, poker_sites.*,
networks.network_name, networks.network_icon FROM poker_sites
    LEFT JOIN networks
    ON (poker_sites.network_id=networks.network_id)
    LEFT JOIN editor_content
    ON (poker_sites.site_id=editor_content.assign_id)
    WHERE poker_sites.published=1

最佳答案

如果您想使用聚合函数(在本例中为 AVG)获取多个结果,则需要 GROUP BY。

    SELECT x.avgRating AS rating, poker_sites.*,
        networks.network_name, networks.network_icon 
    FROM poker_sites
    LEFT JOIN networks
        ON (poker_sites.network_id=networks.network_id)
    LEFT JOIN 
    (
        SELECT AVG(editor_content.rating) as avgRating, editor_content.assign_id
        FROM editor_content
        GROUP BY editor_content.assign_id
    ) x
        ON (poker_sites.site_id = x.assign_id)
    WHERE poker_sites.published=1

关于SQL JOIN 多个表并获取 AVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433749/

相关文章:

python - 如何使用 Spark Data Frame 中前一行的两列计算一行中的列?

mysql - 使用左连接删除 MYSQL 中的孤儿

c# - 使用 Lambda 表达式编写复杂的 Linq 连接

c# - 循环中的 Sql 请求会减慢 C# 应用程序的速度

MySQL 4 表连接和分组作为主表

mysql - SQL Left Join 不显示所有行

sql - 加入;请只记录一张!

sql - 所有动态列的总和

mysql - 严格的双向关系

sql - INSERT-SELECT 查询可以受竞争条件的约束吗?