我这样做了一个查询:
SELECT nr_budynku, nr_pokoju, count (DISTINCT nr_szafy) AS count
FROM szafa
INNER JOIN szafa_miejsce_przechowywania ON szafa.id = szafa_miejsce_przechowywania.id_szafa
INNER JOIN miejsce_przechowywania ON szafa_miejsce_przechowywania.id_miejsce_przechowywania = miejsce_przechowywania.id
GROUP BY nr_budynku, nr_pokoju, nr_szafy;
查询给了我这个结果:
nr_budynku | nr_pokoju | count
------------+-----------+-------
1 | 25 | 1
1 | 25 | 1
1 | 123 | 1
2 | 122 | 1
但我想要这个:
nr_budynku | nr_pokoju | count
------------+-----------+-------
1 | 25 | 2
1 | 123 | 1
2 | 122 | 1
此查询有什么问题? 我用sum函数尝试了一些东西,但情况更糟。 我在postgres工作 szafa中的id是我的主键,但是szafa中的nr_szafy描述了衣柜的数量,在我的示例中,数据库id是从1到10,但是nr_szafy是从1到4。
答案 0 :(得分:0)
SELECT nr_budynku, nr_pokoju, count (nr_szafy) as count
FROM szafa
INNER JOIN szafa_miejsce_przechowywania ON szafa.id = szafa_miejsce_przechowywania.id_szafa
INNER JOIN miejsce_przechowywania ON szafa_miejsce_przechowywania.id_miejsce_przechowywania = miejsce_przechowywania.id
group by nr_budynku, nr_pokoju;
从分组中删除nr_szafy
。