2014-10-28 2 views
0

Я работаю с PostgreSQL в R и пытаюсь использовать оператор IN, но он не работает. Все соединения работают (также указан объект con, проблема в запросе).R + PostgreSQL - оператор IN

У меня есть следующий код.

COLUMNS <- function(){c("A","B","C")} 
DEALS <- function(){c("DealA","DealB","DealC")} 
TABLE <- "TABLE_NAME" 

QUERY_DEALS <- sqlQuery(con, paste(
"SELECT", paste0("\"", COLUMNS(),"\"",sep="",collapse=","), 
"FROM", TABLE, 
"WHERE \"dealname\" IN ", paste0("\"",DEALS(),sep="",collapse=","))) 

Он возвращает следующую ошибку.

42601 7 ERROR: syntax error at or near ""DealA""; 
Error while executing the query 

Я ожидаю столбцы (от функции столбиков) из сделок, указанных в функции авиакомпаний. Может ли кто-нибудь помочь мне? Заранее спасибо.

С наилучшими пожеланиями, Роберт

+0

Вы забыли '' '' 'WHERE \ d'? Если это была опечатка, ваша итоговая строка SQL-запроса не имеет значений после' IN', заключенных в круглые скобки: http: //www.postgresqltutorial. com/postgresql-in/ – hrbrmstr

+0

Это была опечатка. Я изменил ее сейчас. "WHERE \" dealname \ "IN", paste0 ... является правильным. –

+1

Тогда вам нужно только добавить круглую скобку как Я предложил и связал с ним. – hrbrmstr

ответ

0
"SELECT", paste0("\"", COLUMNS(),"\"",sep="",collapse=","), 
"FROM", TABLE, 
"WHERE \"dealname\" IN (", paste0("\"",DEALS(),sep="",collapse=","),")")) 

правильный ответ, как @hrbrmstr указал.

+1

FWIW Вы должны действительно избегать написания запросов таким образом. Слишком сложно читать. 'Sprintf' - ваш друг. –

Смежные вопросы