在一个查询

时间:2017-07-30 21:53:47

标签: php mysql

我有一个包含几个列的数据库,我正在尝试用它填充一个html表。 一切都很顺利,但我遇到了以下问题:

由于我将过滤后的结果填充到不同的列中,我想出了一个需要Select *和count(*)的SQL查询?

$query = "SELECT *, COUNT(example_A) AS total_example_A FROM test WHERE example_A = 'certain_result' AND date(start_date) = '$current_date_proof' ORDER BY start_date ASC";

确实有效,但我只得到了第一个结果。我想我不能将Select与Count结合起来?

1 个答案:

答案 0 :(得分:0)

您可以使用相关的子查询来执行此操作,Count是一个聚合函数(因此它聚合或组合所有数据):

$query = "
    SELECT
        t1.*,
        ( SELECT COUNT(t0.id) FROM test AS t0 WHERE t0.id = t1.id ) AS total_example_A
    FROM
        test AS t1
    WHERE
            t1.example_A = 'certain_result'
        AND
            date(t1.start_date) = '$current_date_proof'
    ORDER BY t1.start_date ASC
";

这假设您的表test有一个名为id的主键。另一件事是,如果不是(example_A)COUNT(t0.id)

,我会指望主键

在我的世界中,数据库要么具有Auto Increment Int作为主键,要么它们具有由2个或更多外键组成的复合主键,这些外键本身是Auto Increment Int字段。在您的表格中始终拥有代理键​​是至关重要的(IMO)。这是与数据本身没有直接关系的关键。但是,那只是我...

您可以只计算应用程序中的返回值,但除非相关的子查询应该为您提供最佳/最佳性能。当然比单独的数据库调用要好得多。