[英]SQL Query Error when selecting separate columns
我不明白我的SQL查詢中出現的錯誤。 如果我選擇在SQL中Select *
- >它工作正常,我確實得到了表,但是如果我選擇任何列/ s它會給我一個錯誤:
$<-.data.frame
(*tmp*
,“PROBE”,value = structure(integer(0),。Label = character(0),class =“factor”))中的錯誤:):
替換有0行,數據有1427
這是我的SQL代碼:
if(input$filter == 1){
sqlOutput <- reactive({
sqlInput <- paste("select * from DWH.PROBE where DWH.PROBE.Nr =",paste0("'",d(),"'"), "And DWH.PROBE.AB BETWEEN",input$abmfrom, "AND",input$abmto,"ORDER BY Datum asc")
print(sqlInput)
dbGetQuery(con$cc, sqlInput)
})
}else{
sqlOutput <- reactive({
sqlInput <- paste("select * from DWH.PROBE where DWH.PROBE.S BETWEEN",d2(), "AND",input$sgehalt2, "And DWH.PROBE.AB BETWEEN",input$abmfrom2, "AND",input$abmto2,"ORDER BY Datum asc")
dbGetQuery(con$cc, sqlInput)
})}
如果我只是添加到那些SQL查詢
select DWH.PROBE.S, DWH.PROBE.AB.. from DWH.PROBE
然后是上面提到的錯誤。
此外,我需要說,如果我將在一個簡單的代碼中使用此SQL查詢:
rs <- dbSendQuery(con, paste("select DWH.PROBE.AB, DWH.PROBE.S from DWH.PROBE where DWH.PROBE.Nr = '50' And DWH.PROBE.AB BETWEEN 40 AND 50 ORDER BY Datum asc"))
data <- fetch(rs)
它給了我結果......
有任何想法嗎?
[編輯*因為我的問題不重復]
這里發布的問題是: http : //stackoverflow.com/questions/32048072/how-to-pass-input-variable-to-sql-statement-in-r-shiny實際上與我的主題無關。 我們可以看到這篇文章中的錯誤:
.getReactiveEnvironment()中的錯誤$ currentContext():沒有活動的響應上下文時不允許操作。 (你試圖做一些只能在反應式表達式或觀察者內部完成的事情。)
我沒有將輸入變量傳遞給sql語句的問題,另外如果你可以在我的SQL中看到:查詢處於被動上下文中!:
sqlOutput <- reactive({...
上述問題的解決方案是:
將SQL Query置於反應式上下文中 ,這在我的案例中並非如此
[編輯2] - >與sqlOutput()
相關的位
這里有一些與我在Shiny App中使用的sqlOutput()
相關的代碼(目前這是唯一的一點,因為我sqlOutput()
了SQL查詢)
output$tabelle <- DT::renderDataTable({
data <- sqlOutput()
data$PROBE <- as.factor(as.character(data$PROBE))
data
}, rownames=TRUE, filter="top", class = 'cell-border stripe',
options = list(pageLength = 100, lengthMenu=c(100,200,500), columnDefs = list(list(width = '200px', targets = "_all"),list(bSortable = FALSE, targets = "_all"))))
謝謝
錯誤與SQL語句無關,但是,請嘗試將代碼更改為:
sqlOutput <- reactive({
if(input$filter == 1){
sqlInput <- paste("select * from DWH.PROBE where DWH.PROBE.Nr =",paste0("'",d(),"'"), "And DWH.PROBE.AB BETWEEN",input$abmfrom, "AND",input$abmto,"ORDER BY Datum asc")
} else {
sqlInput <- paste("select * from DWH.PROBE where DWH.PROBE.S BETWEEN",d2(), "AND",input$sgehalt2, "And DWH.PROBE.AB BETWEEN",input$abmfrom2, "AND",input$abmto2,"ORDER BY Datum asc")
}
dbGetQuery(con$cc, sqlInput)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.