using: sql server
Here is what I am trying to accomplish. I have two tables one with 70 companies (company info, etc) and one table recording the incident numbers of those companies.
I like my sql result to return every company name whether a match is found or not. I thought an outer join will help, but it looks like my where clause is preventing this from happening:
I have tried full join, outerjoin, left join, same results …..
====> However if i remove the where clause then I get all companies names.
SELECT count(*) AS total_num, TS_NAME
FROM TTS_INCIDENTS RIGHT OUTER JOIN TS_COMPANIES
ON TS_COMPANIES.TS_ID=TTS_INCIDENTS.TS_COMPANYID
WHERE TS_ACTIVEINACTIVE = 0 AND (TS_INCIDENTTYPE=10 OR TS_INCIDENTTYPE=11)
GROUP BY TS_NAME
ORDER BY TS_NAME
Thanks
Bruce
Even if I don’t know which relation holds which columns in your example, I’m pretty sure you actually want to do this:
i.e. select from companies and left outer join incidents to the companies, using the incident predicates as left outer join criteria, not as select criteria.
Note, in most RDBMS, a(don’t remember where I’ve read this. Might be an outdated fact).RIGHT OUTER JOINusually has a heavy performance impact and should be avoided if possible