我对SQL有点陌生,我有一个Postgresql查询,我在Postgres 9.x中的理解是,默认情况下连接是内部连接:
select count(*)
from physical_promotions
JOIN subscriptions ON physical_promotions.product_id = subscriptions.id
JOIN users on subscriptions.user_id = users.id
JOIN referrals ON referrals.referred_user_id = users.id
where physical_promotions.coupon_id = '55';将其解释为coupon_id为55的所有物理促销的计数与相应的订阅相交,与相应的推荐相交,与相应的用户相交,是否正确?
编辑:
另外,我正在尝试计算physical_promotions的数量-所以这是正确的方法吗?
下面是我的新查询:
select count(distinct physical_promotions.id)
from physical_promotions
JOIN subscriptions ON physical_promotions.product_id = subscriptions.id
JOIN users on subscriptions.user_id = users.id
JOIN referrals ON referrals.referred_user_id = users.id
where physical_promotions.coupon_id = '55';发布于 2016-03-04 10:26:55
是的,事实上,你也可以写同样的东西如下:
SELECT count(*)
FROM physical_promotions,
subscriptions,
users,
referrals
WHERE physical_promotions.product_id = subscriptions.id
AND subscriptions.user_id = users.id
AND referrals.referred_user_id = users.id
AND physical_promotions.coupon_id = 55为了清楚起见,我可能会建议显式指定连接类型。
另请注意,您可能不一定会获得独特的促销数量。例如,如果一个促销有两个订阅,则您的结果将包含该促销(以及用户和推荐)两次。
https://stackoverflow.com/questions/35786707
复制相似问题