开发者

ms access / sql server syntax (i guess)

开发者 https://www.devze.com 2023-01-19 14:35 出处:网络
this query: SELECT sentmails.[VersandDatum], sentmails.[DatumMailGeplant], mailintervals.[Interval], definitions.[Subject],

this query:

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 (mai开发者_如何学运维lintervals 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

...works fine in ms access qbe, but in sql server it returns a "incorrect syntax near ')'" error. I'm really wondering why:

  • the joins need to be in brackets?
  • no more outer joins in sql server?
  • somewhere more brackets needed?


MS Access has a slightly different JOIN syntax. Use this instead:

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


Your JOIN syntax is incorrect. You should be joining each table individually, without nested parentheses. You probably want something like:

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消