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