"Steven Adams" <swadams3@comcast.net> writes:
> select ia.name, iac.internal
> from information_assets as ia
> left outer join information_asset_categories as iac on(ia.category_id =
> iac.id)
> and ia.id = 21
> This causes all rows in information_assets to be returned despite the "and"
> clause.
AFAICS that's correct behavior. I think you're confused about SQL
syntax: the way you've written it, the "ia.id = 21" condition is
part of the left join's ON clause, and therefore it cannot cause any
rows from the left side of the join to be omitted. (Hint: those
parentheses are just noise.) Perhaps you meant to write WHERE ia.id = 21?
regards, tom lane