php - 从相互关联的 MySQL 表中获取最大值

标签 php mysql join

我正在尝试使用 LEFT JOIN 统一一对查询,以便我可以在所需的列上执行 ORDER BY

表A与表B具有排他性的一对多关系,表B与表C具有排他性的一对多关系。

我想为表 A 中的每一行获取表 C 中某列的最大值。

我曾经拥有的是:

$tableA = SELECT * FROM tableA;
for each row in $tableA {
  $maxValue = SELECT MAX(value) FROM tableC WHERE tableB_id IN (SELECT tableB_id FROM tableB WHERE tableA_id={$row['tableA_id']}) GROUP BY tableB_id;
}

现在我的思路是:

SELECT * FROM tableA LEFT JOIN (SELECT tableA_id, MAX(max_c_value) FROM (SELECT tableB_id, MAX(value) max_c_value FROM tableC GROUP BY tableB_id) t GROUP BY tableA_id) USING(tableA_id)

但我知道那是胡言乱语。我不知道从这里去哪里。 我发现很难解释这个问题,抱歉。

最佳答案

SELECT A.ID, MAX(C.MyField) as CField
FROM A
    LEFT OUTER JOIN B
        ON A.ID = B.A_ID
            LEFT OUTER JOIN C
                ON B.ID = C.B_ID
GROUP BY A.ID

如果没有对应的行,您将获得 CField 的空值。

关于php - 从相互关联的 MySQL 表中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508443/

相关文章:

javascript - 只是想确保我做的事情是对的

sql - 一个关于表连接的sql问题

join - 清理未通过外部检查的 MySQL 表

mysql - 在 SELECT mysql 中使用 IF 和 JOIN 时出现错误

php - 如何对两个循环使用一个查询

php - Yii2:如何使用 POST 方法重定向?

php - 如何在 OSX 10.8.4 下使用适用于 Yii 和 Netbeans 的 MAMP 2.1.4 安装 phpunit?

mysql - 获取具有最小差异的范围的 ID

php - Mysql查询查杀脚本

sql - 错误 : invalid reference to FROM-clause entry for table "r"