【发布时间】:2015-04-06 10:35:38
【问题描述】:
我有两张桌子:
表user_ratings
id home_info_id ratings
1 1 3.5
2 2 3.5
3 1 4
4 1 5
5 1 2
6 2 1
7 2 4
表home_info:
id home_name
1 my_home
2 ur_home
3 his_home
如您所见,“my_home”和“ur_home”有评分,但“his_home”尚未评分。我正在计算所有房屋的平均值,所以我只得到两个房屋的平均值,即“my_home”和“ur_home”,正如我所说的“his_home”尚未评级,所以我的查询中没有得到“his_home”以下。我想要所有尚未评级的房屋名称。这是我的查询:
select u.home_info_id
, avg(u.ratings)
, h.home_name
from user_ratings u
, home_info h
where h.id = u.home_info_id
group by u.home_info_id
, h.home_name;
输出是这样的:
home_info_id ratings home_name
1 4.83 my_home
2 2.83 ur_home
但我想要这样的东西:
home_info_id ratings home_name
1 4.83 my_home
2 2.83 ur_home
3 0 his_home
【问题讨论】:
-
为什么是 MySQL 标签? (不要标记未涉及的产品...)
-
查询对所有人都是一样的,如果我对 mysql 查询有所了解,我将在 postgresql 中实现
-
现在删除了 sql 和 mysql 标签,请为我被否决的问题投票,现在它有足够的信息。:-(
-
user_review或user_ratings?请使问题保持一致。 -
修正了 mr.@ErwinBrandstetter 顺便说一句,我并不是要公开和私人的,我认为主要目的是获得知识,没有人为我写查询,我来这里是为了从那些谁那里获取知识希望分享。感谢您发现错误。
标签: sql postgresql left-join aggregate-functions postgresql-9.1