0

1つのデータベースの1つのselectクエリで3つ以上のテーブルを内部結合したいのですが、すべてのテーブルに共通の列としてrm_idがありますが、1つのSQLクエリですべてのテーブルの行を表示したい場合は可能です。 uいくつかのコードを提供する

select * from 
        bk_det inner join
        bk_rep inner join
        bk_sec inner join
        mut_det inner join
        rm_det inner join
        soil_det 
on
          bk_det.rm_id =   bk_rep.rm_id =  bk_sec.rm_id =  mut_det.rm_id = rm_det.rm_id = soil_det.rm_id
4

2 に答える 2

5

内部結合ごとにon句が必要です。例えば

select * from a 
inner join b on a.id = b.id 
inner join c on b.id = c.id
于 2012-12-29T14:26:11.297 に答える
2

ON各結合の句がありません。

select * 
from bk_det 
inner join bk_rep 
  on bk_det.rm_id =  bk_rep.rm_id
inner join bk_sec 
  on bk_rep.rm_id = bk_sec.rm_id
inner join mut_det 
  on bk_sec.rm_id =  mut_det.rm_id
inner join rm_det 
  on mut_det.rm_id = rm_det.rm_id
inner join soil_det 
    on rm_det.rm_id = soil_det.rm_id

注:テーブルの構造がわからないため、結合条件の列名を確認する必要があります

結合構文の学習についてサポートが必要な場合は、ここに結合の優れた視覚的な説明があります

これを使用しているため、各テーブルにが存在するINNER JOIN場合、これはレコードを返します。rm_id

LEFT JOIN:を使用する必要があるかもしれません

select * 
from bk_det 
left join bk_rep 
  on bk_det.rm_id =  bk_rep.rm_id
left join bk_sec 
  on bk_rep.rm_id = bk_sec.rm_id
left join mut_det 
  on bk_sec.rm_id =  mut_det.rm_id
left join rm_det 
  on mut_det.rm_id = rm_det.rm_id
left join soil_det 
    on rm_det.rm_id = soil_det.rm_id
于 2012-12-29T14:27:12.377 に答える