簡體   English   中英

在一個數據庫中內部聯接兩個以上的表

[英]Inner join more than 2 tables in a single database

我想在一個數據庫中的一個選擇查詢中對3個以上的表進行內部聯接,所有這些表都將rm_id作為公共列,但是我想在一個sql查詢中顯示所有表的行,如果可能的話,我會聽到你提供一些代碼

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

每個內部聯接都需要一個on子句。 例如

select * from a 
inner join b on a.id = b.id 
inner join c on b.id = c.id

您缺少每個聯接的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

注意:由於我不知道您的表結構,因此您必須檢查聯接條件列名

如果您在學習連接語法方面需要幫助,這是對joins的直觀說明

由於您使用的是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM