-1

列 id、product_type、product_id、quantity をすべて整数として持つテーブルがあります。product_type に応じて、別のテーブルからデータを選択する必要があります。例えば。product_type が 0 の場合は tableA から選択し、product_type が 1 の場合は tableB から選択します。選択を作成する方法を見つけようとしましたが、失敗しました。誰か助けてください。すべての助けに感謝します。ありがとうございました。

4

2 に答える 2

3

マスターテーブルを個々の製品テーブルと結合しますが、左結合を使用product_type = xし、結合条件にフィルターを含めて、目的のレコードのみが実際に結合されるようにします。

これにより、多くのNULL値が得られます。coalesce出力の非NULL値を取得するために使用します。

SELECT sales.id,
       sales.quantity,
       sales.product_type,
       coalesce(tableA.name, tableB.name) AS name,
       coalesce(tableA.color, tableB.color) AS color,
       tableA.numberOfAs                -- is NULL for other product types
FROM sales
  LEFT JOIN tableA ON sales.product_type = 0 AND
                      sales.product_id = tableA.product_id
  LEFT JOIN tableB ON sales.product_type = 1 AND
                      sales.product_id = tableB.product_id
WHERE ...
于 2013-02-20T19:11:52.867 に答える
0

CASEステートメントが必要なようです

SELECT 
   CASE 
      WHEN product_type = 1 THEN (SELECT column FROM table1 WHERE ...)
      WHEN product_type = 2 THEN (SELECT column FROM table2 WHERE ...)
   END 
FROM table

おそらく JOINS を使用することでより効率的になる可能性がありますが、それはスキーマによって異なります。

于 2013-02-20T16:47:53.943 に答える