Skip to content

Using SQL "IN" with RJDBC or RMySQL

5 messages · David Epstein, Jeff Newmiller, Gabor Grothendieck

#
Hello,


The code below works fine up until I try to use the "IN" statement in
the last line. The proper SQL format is:

SELECT * FROM this_table WHERE this_column IN (1,2,3,4,5)

But, I think I may be getting something like:

SELECT * FROM this_table WHERE this_column IN c(1,2,3,4,5)

Which makes no sense in SQL. I think it may be just a matter of string
massaging, but I'm not certain. I've tried to build the query using
sprintf statements with no luck. I could not get RMySQL to do it either.
Any suggestions?


thank you,
-david


library(RJDBC)

drv <- JDBC("com.mysql.jdbc.Driver",
"/home/davideps/Software/extlibs/mysql-connector-java-5.0.7-bin.jar",identifier.quote="`")

conn <- dbConnect(drv, "jdbc:mysql://localhost/civicrm",
"userid","pass")

org_table=dbGetQuery(conn,"SELECT id,organization_name FROM
civicrm_contact WHERE contact_type=?","organization")

dbGetQuery(conn,"SELECT id from civicrm_relationship WHERE contact_id_a
IN ? AND contact_id_b IN ?",org_table$id,org_table$id)
#
thank you! I was able to get it to work with
collapse=","
On Wed, 2011-10-19 at 01:52 -0500, Jeff Newmiller wrote:
#
On Wed, Oct 19, 2011 at 12:35 AM, David Epstein <davideps at umich.edu> wrote:
With gsubfn if  you preface your function with fn$ as shown below then
it turns on a quasi-perl style string interpolation:

library(gsubfn)
organization <- 3
org_table <- fn$dbGetQuery(conn,""SELECT id,organization_name FROM
civicrm_contact WHERE contact_type=$organization")

See ?fn and the gsubfn home page (http://gsubfn.googlecode.com) for details.
#
Gabor,

thank you. I just got the script working using paste but your solution
looks good as well. I was not familiar with gsubfn. Appears very useful.

-david