【问题标题】:ms access / sql server syntax (i guess)ms access / sql server 语法(我猜)
【发布时间】:2011-04-23 08:34:05
【问题描述】:

这个查询:

SELECT sentmails.[VersandDatum], 
       sentmails.[DatumMailGeplant], 
       mailintervals.[Interval], 
       definitions.[Subject], 
       users.[Name], 
       sentmails.[MailArt], 
       Objekte.[Name], 
       sentmails.[Erledigt], 
       sentmails.[ID]
  FROM Objekte 
RIGHT JOIN (users RIGHT JOIN (definitions RIGHT JOIN (mailintervals RIGHT JOIN (sentmails) ON mailintervals.ID=sentmails.Intervall) ON definitions.ID=sentmails.Noti_ID) ON users.UID=sentmails.Funktion) ON Objekte.OId=sentmails.Objekt_ID

...在 ms access qbe 中工作正常,但在 sql server 中返回“')' 附近的语法不正确”错误。我真的很想知道为什么:

  • 连接需要放在括号中吗?
  • sql server 中不再有外连接?
  • 需要更多括号吗?

【问题讨论】:

    标签: sql-server ms-access outer-join


    【解决方案1】:

    您的JOIN 语法不正确。您应该单独加入每个表,没有嵌套括号。你可能想要这样的东西:

    SELECT sentmails.[VersandDatum]
        , sentmails.[DatumMailGeplant]
        , mailintervals.[Interval]
        , definitions.[Subject]
        , users.[Name]
        , sentmails.[MailArt]
        , Objekte.[Name]
        , sentmails.[Erledigt]
        , sentmails.[ID]
    FROM Objekte
    RIGHT JOIN sentmails ON Objekte.OId = sentmails.Objekt_ID
    RIGHT JOIN users ON users.UID = sentmails.Funktion
    RIGHT JOIN definitions ON definitions.ID = sentmails.Noti_ID
    RIGHT JOIN mailintervals ON mailintervals.ID = sentmails.Intervall
    

    Here's a starting point in MSDN.

    【讨论】:

      【解决方案2】:

      MS Access 的 JOIN 语法略有不同。改用这个:

      SELECT 
          sentmails.[VersandDatum], 
          sentmails.[DatumMailGeplant], 
          mailintervals.[Interval], 
          definitions.[Subject], 
          users.[Name], 
          sentmails.[MailArt], 
          Objekte.[Name], 
          sentmails.[Erledigt], 
          sentmails.[ID]
      FROM Objekte 
      RIGHT JOIN sentmails ON Objekte.OId=sentmails.Objekt_ID
      RIGHT JOIN definitions definitions.ID=sentmails.Noti_ID
      RIGHT JOIN mailintervals ON mailintervals.ID=sentmails.Intervall
      RIGHT JOIN users ON users.UID=sentmails.Funktion
      

      【讨论】:

      • 只是尝试 sqlstr.Replace("RIGHT JOIN", "RIGHT OUTER JOIN").Replace("(", "").Replace(")", "") 它似乎是变得更好
      猜你喜欢
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2011-08-07
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多