1

私は4つのテーブルを持っており、4つは1つのジャンクションテーブルの外部キーです。

問題は、欠落しているjnction値を取得する必要があることです。

例えば:

Table A       Table B      Table C     Table D             
--------     ---------    ---------   ----------
  1              4            7          A
  2              5            8          B



 JUNCTION TABLE
-----------------
  1   4   7   A
  1   4   7   B
  1   4   8   A
  1   4   8   B
  1   5   7   A
  1   5   7   B
  1   5   8   A
  1   5   8   B      
  2   4   7   A
  2   4   7   B
  2   4   8   A
  2   4   8   B
  2   5   7   A
  2   5   7   B
  2   5   8   A
  2   5   8   B      

したがって、列1 5 8 Bが欠落している場合、クエリを実行すると1 58Bと表示されます。

何か案は?

4

2 に答える 2

1

ソース テーブルでクロス結合を使用し、その結果をジャンクション テーブルに結合します。

編集: MySQL には FULL OUTER JOIN がないことを指摘してくれた andy holaday に感謝します。

select x.*
from (select *
      from a,b,c,d) as x
left outer join j
    on (x.a = j.a and
        x.b = j.b and
        x.c = j.c and
        x.d = j.d)
where j.a is NULL and
      j.b is NULL and
      j.c is NULL and
      j.d is NULL
于 2012-07-26T01:06:23.203 に答える
0

クロス結合された 4 つのテーブルからジャンクションへの外部結合を行う次のクエリを使用します。

select a.col, b.col, b.col, d.col
from tablea a
cross join tableb b
cross join tablec c
cross join tabled d
left join junction j 
    on j.cola = a.col
    and j.colb = b.col
    and j.colc = c.col
    and j.cold = d.col
where junction.cola is null; -- sufficient to test just one
于 2012-07-26T02:59:15.290 に答える