2

最初のテーブル -- 製品テーブル

P_ID   P_Name    D_Flag
 37    keyboard    N
 38    mouse       N
 39    hardisk     Y
 40    pendrive    Y
 41    printer     Y
 42    CD-DVD      Y
 43    cardreader  Y

および 2 番目のテーブル Product_Detailテーブル

P_ID  P_ID  P_Prize  P_Company  D_Flag
 11    37    600       Intex     N      
 12    38    200       Enter     N
 13    39    1000      XYZ       N
 14    40    200       SONY      Y
 15    41    5000      LG        Y

次に、出力は次のようになります--------> ProductListテーブル

P_Name      P_Prize   P_Company 
hardisk      --        --
pendrive     200       SONY
printer      5000      LG
CD-DVD       --        --
cardreader   --        --

- そのため、テーブル ProductList には、Product.D_Flag='Y' である製品名 (P_Name)、製品の賞品 (P_Prize)、および製品会社 (P_Company) が含まれており、Product_Detail.D_Flag='Y' であるテーブル Product_Detail からこれらのフィールドを選択する必要があります。それ以外の場合、値は null にする必要があります。

4

4 に答える 4

1

これはそれを行う必要があります:

SELECT p.p_name, pd.p_prize, pd.p_company
FROM product p
LEFT JOIN product_detail pd ON p.p_id = pd.p_id AND pd.d_flag = 'Y'
WHERE p.d_flag = 'Y'

つまり、実行しているのは、のすべての行を選択することでproductあり、WHERE句は、d_flagがYに設定されている行に制限します。

次に、Left Outer Joiningになります。つまり、左側のすべての行(product内)と右側のproduct_detail内の交差点を取得します。d_flag結合条件は行に一致しますが、詳細テーブルのが「Y」である行にのみ一致します。これは、外部結合を無効にするため、WHERE句には入れられません(結合がない行は取得されません)。

于 2013-03-04T09:01:26.917 に答える
1
SELECT P.p_name, Case When PL.p_prize is Null Then "--" Else PL.p_prize END, 
       Case When PL.p_company is Null Then "--" ELSE  PL.p_company
  FROM Product P
    LEFT JOIN Product_Detail PL ON P.p_id = PL.p_id AND PL.d_flag = 'Y'
 WHERE P.d_flag = 'Y'
于 2013-03-04T09:03:32.643 に答える
1
select p_name,decode(b.d_flag,'N',null,p_prize) p_prize,decode(b.d_flag,'N',null,P_Company) P_Company
from product a,product_detail b
where a.p_id=b.p_id;
于 2013-03-04T09:53:13.217 に答える
0
SELECT  a.P_NAME,
        COALESCE(b.P_Prize, '--') Prize,
        COALESCE(b.P_Company, '--') CompanyName
FROM    Product a
        LEFT JOIN product_Detail b
            ON a.P_ID = b.P_ID AND
                a.D_FLAG = 'Y' AND
                b.D_FLAG = 'Y'
-- WHERE additional conditions here

結合についてさらに知識を深めるには、以下のリンクにアクセスしてください。

于 2013-03-04T09:02:51.757 に答える