Company、Vehicles、Quotes、PhoneRequests の 4 つのテーブルがあります。
企業は、車両に関する見積もりと依頼の両方を受け取ることができます。
各見積もりとリクエストには、時刻がスタンプされます。
見積もりまたはリクエストの数が 0 より大きい限り、各会社が各月に受け取った見積もりとリクエストの数を見つけたいと考えています。
2 つの別々のテーブルの月が同じになるようにグループ化する方法がわかりません。
ここに私がこれまでに持っているものがあります:
SELECT
company.name `company`,
vehicle.name `vehicle`,
DATE_FORMAT(COALESCE(quote.qtime, pr.date),'%Y-%m') `month`,
COUNT(DISTINCT quote.qid) `quotes`,
COUNT(DISTINCT pr.id) `phone_reqs`
FROM companies company
LEFT JOIN vehicles vehicle ON vehicle.compid=company.cid
LEFT JOIN quote_vehicle qv ON qv.vehicle_id=vehicle.vid
LEFT JOIN quotes quote ON qv.quote_id=quote.qid
LEFT JOIN phone_requests pr ON pr.vehicle_id=vehicle.vid AND quote.qtime IS NULL OR DATE_FORMAT(quote.qtime,'%Y-%m')=DATE_FORMAT(pr.date,'%Y-%m')
GROUP BY
company.cid, `month`
HAVING
quotes > 0 OR phone_reqs > 0
ORDER BY
`month` DESC, `company` ASC
phone_reqs
しかし、おそらくそのせいで、間違った会社に帰属しているようAND quote.qtime IS NULL OR DATE_FORMAT(quote.qtime,'%Y-%m')=DATE_FORMAT(pr.date,'%Y-%m')
です。ただし、見積もりとリクエストが同じ月に行われたことを確認する方法が他にわかりません。