Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何运行有关innerjoin的sql查询_Sql_Inner Join - Fatal编程技术网

如何运行有关innerjoin的sql查询

如何运行有关innerjoin的sql查询,sql,inner-join,Sql,Inner Join,我已从我的表中编写了上述代码,但未运行其显示错误: 味精102,第15级,状态1,第2行 “bk_分支”附近的语法不正确 请帮忙 您需要通过,s在选择中分隔字段。联接本身在语法上看起来正常 select rm_id as 'ID' bk_branch as 'BRANCH' br_name as 'BANK REP.' bs_name as 'ESCORT' dt_rep as 'DATE' rep_time as

我已从我的表中编写了上述代码,但未运行其显示错误:

味精102,第15级,状态1,第2行
“bk_分支”附近的语法不正确


请帮忙

您需要通过
s在
选择中分隔字段。联接本身在语法上看起来正常

select rm_id as 'ID'
        bk_branch as 'BRANCH'
        br_name as 'BANK REP.'
        bs_name as 'ESCORT'
        dt_rep  as 'DATE'
        rep_time as 'TIME'
        amt
        inv_no
        total_box
        box_no
        note_state
        dm_state
        1
        2
        10
        20
        50
        100
        500
        1000
        tp
        tv
        tp_ex1
        tv_ex1
        tp_m
        tv_m         
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

只需给列赋予表别名,否则会产生歧义

select rm_id as 'ID'
        ,bk_branch as 'BRANCH'
        ,br_name as 'BANK REP.'
        ,bs_name as 'ESCORT'
        ,dt_rep  as 'DATE'
        ,rep_time as 'TIME'
        ,amt
        ,inv_no
        ,total_box
        ,box_no
        ,note_state
        ,dm_state
        ,1
        ,2
        ,10
        ,20
        ,50
        ,100
        ,500
        ,1000
        ,tp
        ,tv
        ,tp_ex1
        ,tv_ex1
        ,tp_m
        ,tv_m         
from bk_det 
...

您需要在选择的每一列后面都有逗号
!!语法检查器在第一个错误时停止,这有点令人困惑。当然,有很多错误,看到这些可能会帮助您识别模式。诊断此问题的一种方法可能是删除连接。您对一个表的选择将不起作用。从一个简单的SQL语句开始,只在它工作时添加到它。然后,当它中断时,您知道问题所在。除了逗号之外,您还应该养成在每个列引用之前放置别名的习惯<代码>rm_id
对于一个是不明确的,因此它将生成一个错误。您需要类似于
bk_det.rm_id
.Msg 209,16级,状态1,第1行不明确的列名“rm_id”。Msg 209,16级,状态1,第5行不明确的列名“dt_rep”。Msg 209,16级,状态1,第6行不明确的列名“rep_time”。它再次显示上述错误@user1904521-不同的错误。您选择的列的名称出现在多个表中。您需要使用希望从-
.Msg 209,级别16,状态1,第1行中选择的表名限定这些列不明确的列名“rm_id”。Msg 209,16级,状态1,第5行不明确的列名“dt_rep”。Msg 209,16级,状态1,第6行不明确的列名“rep_time”。现在它正在显示上述错误@用户1904521-是。这基本上是同一个问题。您不能阅读错误消息并理解它的含义吗?它会告诉你问题是什么,甚至告诉你问题出在哪一列。
select a.rm_id as 'ID',
        bk_branch as 'BRANCH',
        br_name as 'BANK REP.', 
        bs_name as 'ESCORT',
        dt_rep  as 'DATE',
        rep_time as 'TIME',
        amt,
        inv_no,
        total_box,
        box_no,
        note_state,
        dm_state,
        1 ,
        2,
        10,
        20,
        50,
        100,
        500,
        1000,
        tp,
        tv,
        tp_ex1,
        tv_ex1,
        tp_m,
        tv_m,         
from bk_det a
inner join bk_rep b
  on a.rm_id =  b.rm_id
inner join bk_sec c 
  on b.rm_id = c.rm_id
inner join mut_det d
  on c.rm_id =  d.rm_id
inner join rm_det e
  on d.rm_id = e.rm_id
inner join soil_det f
    on e.rm_id = f.rm_id;