On 05-Apr-2003 Chris Fowler wrote:
> Hello All,
>
> I'm trying to determine some marketing statistics using 3 tables
> (sales_opp_source, sales_opp, contract). I want to show ALL of the
> sales_opp_source records and show how many accepted contracts there
> have been for each of those sales_opp_source's (including the ones that
> would be 0).
>
> sales_opp_source
> -------------------------
> id
> name
>
> sales_opp
> --------------
> id
> sales_opp_source_id
>
> contract
> -----------
> id
> sales_opp_id
> status
>
> I basically need to do a LEFT JOIN from sales_opp_source to the results
> of an INNER JOIN between sales_opp and contract, but in the following
> code, I only get back the sales_opp_source's that actually have a
> contract. I want to get back all of the sales_opp_source's whether they
> have a sales_opp/contract or not.
>
No, I think you want 2 left joins:
sales_opp_source } sales_opp } contract
SELECT name, COUNT(contract.id) AS contract_count
FROM sales_opp_source
LEFT JOIN sales_opp ON sales_opp_source.id = sales_opp.sales_opp_source_id
LEFT JOIN contract ON sales_opp.id = contract.sales_opp_id
GROUP BY name;
+------------+----------------+
| name | contract_count |
+------------+----------------+
| billboard | 0 |
| classified | 2 |
| newspaper | 1 |
| radio | 0 |
+------------+----------------+
4 rows in set (0.02 sec)
(BTW, I think your field names are horrid ...)
Regards,
--
Don Read [EMAIL PROTECTED]
-- It's always darkest before the dawn. So if you are going to
steal the neighbor's newspaper, that's the time to do it.
(53kr33t w0rdz: sql table query)
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]