簡體   English   中英

選擇單獨的列時SQL查詢錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM