テーブルopportunities
upsellのエンティティであるかどうかを確認しようとしています。ある企業が複数の機会(1:N)を持つことができ、機会が企業とのつながりを持ち、過去に他の機会がすでに同じ企業とのビジネスを成功裏に終えている(したがってstatus
が7)場合は、言い換えれば、ステータス7の最初の機会はアップセルではなく、同じ会社の他のすべての人は、そのステータスに関係なくアップセルされます。GROUP BYの正当な使用
だから、これはここでの考え方は、副選択で(created_at
列に基づいて)全ての第1正常に終了機会を選択し、同じ会社を持っているすべての機会からそれらを削除することです、私は
SELECT opportunities.id ,true as upsell FROM opportunities, (
SELECT companies.id as company_id, opportunities.id as opportunity_id
FROM opportunities
JOIN companies ON companies.id = opportunities.company_id
WHERE opportunities.status = 7
GROUP BY companies.id, opportunities.id
HAVING min(opportunities.created_at) = opportunities.created_at)
AS subs WHERE subs.opportunity_id = opportunities.id
を試してみたものです。しかし、副選択さえ正しく動作しない場合は、status = 7
でフィルタリングされたすべての機会が返されるので、私はおそらくgroup by節を誤解しています。 -
サンプルデータと希望の再うんざりが本当に助けになるでしょう。 –
私は試してみるよ、 –