通过单个可为空的字段选择行数的正确方法?

时间:2018-06-23 07:38:02

标签: sql symfony doctrine-orm

我有5个状态字段,分别称为“状态”(0..4)。我试图找到一种最佳的方法来计算每个字段的状态,包括0。有一个例子:

table Example
  row 1:
    int id=1; string(255) content="some_content"; smallint status=1;
  row 2:
    int id=2; string(255) content="some_content"; smallint status=1;
  row 3:
    int id=3; string(255) content="some_content"; smallint status=0;
  row 4:
    int id=4; string(255) content="some_content"; smallint status=4;
end

我想要这样的结果:$result === array (0 => 0, 1 => 2, 2 => 0, 3 => 0, 4 => 1)

现在我只看到一种方法-为每个状态创建新查询,但是我敢肯定还有更好的方法。有人可以帮我找到它吗..:)

感谢您的关注!

1 个答案:

答案 0 :(得分:1)

假设您有一个保存状态的表(需要显示匹配的行数为0的表),而另一些表的数据已为状态分配了标准查询,则该表将联接这些表,对结果进行分组并依靠数据表中的外观:

select st.status, count(dt.status)
from status_table st
left join data_table dt on
  st.status = dt.status
group by st.status

即使您可以从SQL返回一个数组,也不会是一个关联数组。我将在应用程序代码(您的情况下为PHP)中处理数据库的输出。