2

特定の条件が満たされた場合にのみ結合したい場合に、複数のテーブルを結合するにはどうすればよいですか?

例:

TABLE A
NUM    TYPE
1      DUPLICATE
2      DUPLICATE
3      INTERACT

TABLE B
ID     REF_TYPE     REF_ID
1      ORDER        000001
1      SEVERE       NULL
1      CATALOG      993004
2      ORDER        003320
2      CATALOG      994002
3      MILD         NULL
3      INTERACTION  NULL
3      CATALOG      992002

ここが難しいところです...

ORDER_TABLE
ID          ORDER_NAME
000001      ORDER1
003320      ORDER2

CATALOG_TABLE
ID          CATALOG_NAME
992002      CATALOG1
993004      CATALOG2
994002      CATALOG3

私がしたいこと:

JOINED TABLE
NUM     TYPE          ORDER_NAME     CATALOG_NAME
1       DUPLICATE     ORDER1         CATALOG2
2       DUPLICATE     ORDER2         CATALOG3
3       INTERACT      NULL           CATALOG1

実際、結合する必要があるのは注文テーブルとカタログ テーブルだけではありませんが、これは、結合のロジックを実行して条件を満たす方法を理解するためのサンプルです。

複数の選択 (table_b b、table_b b1、table_b b2 など) を使用してテーブルを外部結合しようとしましたが、結合を構文する方法があるかどうかわかりません。条件が満たされる - B1.REF_ID を ORDER_TABLE.ID に結合します。ただし、B1.REF_TYPE='ORDER' の場合のみ。

誰でも助けることができますか?

4

3 に答える 3

0

あなたが何をしようとしているのか理解できたら、条件を ON 句に入れます。

SELECT a.num, a.type, o.order_name, c.*
  FROM table_a a
  LEFT JOIN table_b b1 ON b1.id = a.num AND b1.ref_type = 'ORDER'
  LEFT JOIN order_table o ON o.id = b1.ref_id
  LEFT JOIN table_b b2 ON b2.id = a.num AND b2.ref_type = 'CATALOG'
  LEFT JOIN catalog_table c ON c.id = b2.ref_id
 ORDER BY a.num

ここにSQLFiddleがあります。

于 2013-04-30T03:16:27.410 に答える