声明中的错误:ON或USING子句是指什么意思?

时间:2015-04-15 09:28:45

标签: sql

我是SQL的新手,在这个论坛的帮助下,我编写了以下SQL:

Select 
   Ekspeditioner.navn, Ekspeditioner.kundenr,
    Ekspeditioner.lbnr,
     Ekspeditioner.takserdato,
      Ekspliniersalg.ATCkode From ekspeditioner inner join  Ekspliniersalg where takserdato >=timestamp'2014-01-01 00:00:00' 
     and takserdato <=timestamp'2015-04-07 23:00:00'and Ekspliniersalg.atckode='N02BE01'

我收到此错误消息:

  

语句错误:期望ON或U​​SING子句。

我已经尝试过这个论坛,一个SQL tutorial,谷歌并打电话给那个为我正在使用的数据库制作软件而又没有任何结果的公司。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您的 JOIN 语法不正确,您错过了ON,应该是这样的:

INNER JOIN table2
ON table1.column_name=table2.column_name

您的代码应该是:

SELECT Ekspeditioner.navn, 
       Ekspeditioner.kundenr,    
       Ekspeditioner.lbnr,
       Ekspeditioner.takserdato,
       Ekspliniersalg.ATCkode 
FROM  ekspeditioner 
JOIN  Ekspliniersalg 
-- Here should go ON
   ON ekspeditioner.column_name = Ekspliniersalg .column_name
WHERE takserdato >= timestamp'2014-01-01 00:00:00' 
      AND takserdato <=timestamp'2015-04-07 23:00:00'
      AND Ekspliniersalg.atckode='N02BE01'

答案 1 :(得分:0)

请记住,我们需要JOINS的ON子句。 ON子句用于建立连接表之间的关系。请注意,ON子句中使用的字段主要是主键或字段组合,除交叉连接条件外,它们提供唯一结果。

最好使用带有表名的别名。

所以你的查询必须是这样的:

SELECT 
    A.navn, 
    A.kundenr,    
    A.lbnr,
    A.takserdato,
    B.ATCkode 
FROM  ekspeditioner  A
JOIN  Ekspliniersalg  B
-- use ON clause
   ON A.field_name = B .field_name
WHERE takserdato >= timestamp'2014-01-01 00:00:00'  --- use alias
      AND takserdato <=timestamp'2015-04-07 23:00:00'
      AND B.atckode='N02BE01';