Re: Help with SQL.

From: Odd Morten Sveås <odd.morten.sveas_at_accenture.com>
Date: 26 Sep 2002 10:01:29 -0700
Message-ID: <4306a83.0209260901.4cf54072_at_posting.google.com>


"Peter Kirk" <peter_kirk_at_alpha-gruppen.dk> wrote in message news:<3d906ec6$0$62717$edfadb0f_at_dspool01.news.tele.dk>...
> SELECT T_PRODUCT.PRODUCT_ID,T_PRODUCT.PRODUCT_NAME
> > FROM T_PRODUCT
> > WHERE
> > T_PRODUCT.PRODUCT_ID IN (SELECT T_PRODUCTCATEGORY.PRODUCT_ID FROM
> > T_PRODUCTCATEGORY,T_CATEGORY WHERE
> > T_PRODUCTCATEGORY.CATEGORY_ID=T_CATEGORY.CATEGORY_ID
> > AND T_CATEGORY.COUNTRY_ID = ?
> > AND T_CATEGORY.LANGUAGE_ID = ? )
> > ORDER BY PRODUCT_NAME
>
>
> The problem I have is that I don't know how to "ignore" the possibility that
> there is no status in T_PRODUCTSTATUS for a particualr product (in which
> case I would like the result-set to contain "null" for the status_id - or a
> default value of 1 or something).

Hi

Do not use an subselect! You use an outer join. (+)

This should do the trick:

SELECT P.PRODUCT_ID
, P.PRODUCT_NAME

FROM T_PRODUCT P
,    T_PRODUCTCATEGORY PC
,    T_CATEGORY  C
,    T_PRODUCTSTATUS PS

WHERE P.PRODUCT_ID = PC.PRODICT_ID
AND PC.CATEGORY_ID = C.CATEGOTY_ID
AND   P.PRODUCT_ID = PS.PRODUCT_ID (+)-- This is an outer join
AND   C.COUNTRY_ID = ??
AND   C.LANGUAGE_ID = ??
Received on Thu Sep 26 2002 - 19:01:29 CEST

Original text of this message