Re: not grokking outer joins...
От | Stephan Szabo |
---|---|
Тема | Re: not grokking outer joins... |
Дата | |
Msg-id | Pine.BSF.4.21.0108202232480.3144-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | not grokking outer joins... (will trillich <will@serensoft.com>) |
Список | pgsql-general |
On Mon, 20 Aug 2001, will trillich wrote: > i'm trying to wrap outer joins around my cerebellum: > > CUST: > id serial > name varchar(30) > ITEM: > cust integer references cust (id) > data varchar(30) > INFO: > cust integer references cust (id) > stuff text > > for my query i'd like, for every customer, to have > item.* show up if it exists, and info.* show up > if it exists... > > select > CUST.name, > ITEM.data, > INFO.stuff > from > CUST left join ITEM on (CUST.id=ITEM.cust), > CUST left join INFO on (CUST.id=INFO.cust) > .... not! > > or does this need some subselect magic? > I think from cust left join item on (cust.id=item.cust) left join info on (cust.id=info.cust) might be what you want. > and (separate question) is there a way to be sure that ONE or the > OTHER or BOTH have joinable data, but don't show CUST if neither > ITEM nor INFO has a match? > > foreach CUST > if ITEM matches > show record > elsif INFO matches > show record > else -- neither matches > dont show squat, not even from cust > end if > end foreach I'd say something like "where item.cust is not null or info.cust is not null"
В списке pgsql-general по дате отправления: