简体   繁体   English

R中RODBC查询的正确语法是什么

[英]What is the correct syntax of RODBC query in R

I'm trying to query an Access database using RODBC in R using the code below: 我正在尝试使用以下代码在R中使用RODBC查询Access数据库:

library(RODBC)
channel <- odbcConnectAccess("S:\\mypath\\PhysiPopDONOTTOUCH\\Physiology.mdb")

data <- sqlQuery( channel , paste ("select Endoscopy.*,
Histology.Diagnosis from Endoscopy JOIN PatientData ON
Endoscopy.HospNum_Id=PatientData.HospNum_Id  JOIN Histology ON
Histology.HospNum_Id=PatientData.HospNum_Id WHERE histology.VisitDate
= Endoscopy.VisitDate"))

. This is not successful as I get the error: 由于收到错误,此操作不成功:

[1] "42000 -3506 [Microsoft][ODBC Microsoft Access Driver] Syntax
error in FROM clause."
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select Endoscopy.*,
Histology.Diagnosis from Endoscopy JOIN PatientData ON
Endoscopy.HospNum_Id=PatientData.HospNum_Id  JOIN Histology ON
Histology.HospNum_Id=PatientData.HospNum_Id WHERE Histology.VisitDate
= Endoscopy.VisitDate'"

The tables Endoscopy and Histology are each one to many with the PatientData table. EndoscopyHistology表与PatientDataPatientData What am I doing wrong with the syntax? 我的语法有什么问题?

MS Access SQL requires JOIN pairings to be enclosed in parentheses. MS Access SQL要求将JOIN配对括在括号中。 Also, use of paste() is to eliminate long whitespaces inside string values that appear when you break lines in R. And consider using table aliases to concisely reference tables. 另外, paste()是为了消除在R中换行时出现的字符串值内的长空格。并考虑使用表别名来简洁地引用表。 Include a semicolon terminator too (see: When should I use semicolons in SQL Server? ). 还要包括分号终止符(请参阅: 我应何时在SQL Server中使用分号? )。 See below adjustment: 请参阅以下调整:

data <- sqlQuery(channel , 
                 paste("SELECT e.*, h.Diagnosis",
                       "(FROM PatientData p"
                       "INNER JOIN Endoscopy e p ON e.HospNum_Id = p.HospNum_Id)",
                       "INNER JOIN Histology h ON h.HospNum_Id = p.HospNum_Id",
                       "WHERE h.VisitDate = e.VisitDate;", sep=" "))     

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM