【问题标题】:SQL query question from an absolute beginner来自绝对初学者的 SQL 查询问题
【发布时间】:2018-11-21 17:21:43
【问题描述】:

所有,我是 SQL 新手,正在尝试将查询放在一起。我有两个tablesusersorders。我想从orders 返回某些字段,并将结果附加到users 的字段中。两个表中的公共字段是employeeID。我的查询返回语法错误。我已经尝试了几种不同的方法,内部连接,以及简单的连接,右,左,全(在这里在黑暗中拍摄。正如我所说,我对此很陌生)。

查询如下所示:

SELECT orders.clientid, orders.ordertrackingid, orders.clientrefno, orders.dconame, orders.dstreet, orders.dcity, orders.dzip, orders.dzone, orders.employeeid, users.username
where orders.status = 'n'
inner join orders on users.employeeid = orders.employeeid;

我得到的错误在这里:

SQL 错误 [156] [S0001]:关键字“inner”附近的语法不正确。 关键字“inner”附近的语法不正确。 关键字“inner”附近的语法不正确。

任何建议或帮助将不胜感激。

【问题讨论】:

  • 错误信息和你的脚本一样。
  • 是的,我在 CTRL+C 触发器上太快了。

标签: sql


【解决方案1】:

一般的查询结构是:

SELECT -> FROM - > [WHERE] -> [GROUP BY] -> [HAVING] -> [ORDER BY] -> . . .

[] 表示选项子句。

所以,我会将您的查询重写为:

select o.clientid, o.ordertrackingid, o.clientrefno, o.dconame, o.dstreet, o.dcity, o.dzip, o.dzone, o.employeeid, u.username 
from users u inner join 
     orders o
     on u.employeeid = o.employeeid
where o.status = 'n';

【讨论】:

    【解决方案2】:

    我没有看到错误消息,但您似乎错过了添加“FROM users”。 INNER JOIN 之后应该在哪里。你可以在这里看到更正的脚本:

    SELECT orders.clientid
        , orders.ordertrackingid
        , orders.clientrefno
        , orders.dconame
        , orders.dstreet
        , orders.dcity
        , orders.dzip
        , orders.dzone
        , orders.employeeid
        , users.username 
    FROM users
    inner join orders on users.employeeid = orders.employeeid
    where orders.status = 'n' ;
    

    【讨论】:

    • 我编辑了原件以显示错误消息。但是……你的建议奏效了。非常感谢。那么,还有一个问题:当我从两个表中提取内容时,为什么我只需要用户的 FROM?
    • 您需要一个 from 作为来自(用户和订单)的连接
    【解决方案3】:

    只是您错过了一张要加入的表,该表是带有 from 子句的用户

    SELECT orders.clientid, 
    orders.ordertrackingid, 
    orders.clientrefno, orders.dconame, 
    orders.dstreet, orders.dcity, 
    orders.dzip, orders.dzone, 
    orders.employeeid, users.username 
    from users
    inner join orders on 
    users.employeeid = orders.employeeid
    where orders.status = 'n'  ;
    

    【讨论】:

    • 这里发生的事情是你加入了用户和订单的条件为employeeid所以首先它将在一些相关列上加入两个表然后你想要作为一个过滤器在通过where子句进行连接之后其中orders.status='n'
    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多