[R] Forming SQL Query at run-time
Seth Falcon
sfalcon at fhcrc.org
Fri Nov 17 16:29:42 CET 2006
"Rahul Thathoo" <rahul.thathoo at gmail.com> writes:
> Hi.
>
> I am trying to get data from mysql database using a couple of queries.
> I do one query to find out the indexes. Then i need to use these
> indexes in another query, but i keep getting errors.
>
> Here is something:
>
> numb <- dbSendQuery(con2, "select distinct(comparison) from table1")
>
> count <- fetch(numb, -1)
>
> my.matrix <- as.matrix(count)
You've selected one column, why is it a matrix? You index it as a
vector, so I think you just want:
count <- fetch(numb, -1)[[1]]
fetch returns a data.frame which for the select you gave will have one
column. Extracting the column gives you the vector.
> rs <- dbSendQuery(con2, "select A.comparison,A.id, A.q_value,
> B.q_value from table1 as A, table1 as B where A.comparison =
> 'my.matrix[11481]' AND B.comparison = 250 AND A.id = B.id")
As the other responder suggested, you need to create a string using
paste. However, depending on how large length(count) is, you might be
better off doing:
where A.comparison IN ('1', '2', '3', ..., 'n') AND
Which would be something like:
"where A.comparison in (", paste("'", count, "'", sep="", collapse=","), ") ..."
You might also see if mysql supports nested selects in which case you
don't need two queries (from R) at all.
+ seth
More information about the R-help
mailing list