四个条件A到D将传递到SQL查询的WHERE语句中,以从数据库1中提取包含相同名称的对应列的信息。我希望SQL WHERE语句能够忽略两个条件,即条件B的值也可以在数据库2中找到,条件B和C也包含一个称为A的列,并将这两个条件保留在WHERE语句中当在数据库2的A列中找不到A的值时。
此代码是用R语言编写的。我正在查看数据库,并且我知道如果代码按我希望的方式工作,应该会收到一些信息。
query <- paste(/*some select and from statements, these worked*/
"WHERE Database1.A = ?",
"AND",
"CASE ",
"WHEN (0 = SELECT COUNT(Database2.A) FROM Database2 WHERE Database.A = ?)",
"THEN Database1.D = ?",
"ELSE Database1.B = ?",
" END",
"CASE ",
"WHEN (0 <> SELECT COUNT(Database2.A) FROM Database2 WHERE Database.A = ?)",
"THEN Database1.C = ?",
" END",
"AND Database1.D = ?",
"ORDER BY Database1.E",
sep = " ")
sqlParams <- data.frame(
A = params$A,
A1 = params$A,
D = params$D,
B = params$B,
A2 = params$A,
C = params$C,
B1 = params$B
)
res <- sqlExecute(con, query, sqlParams,
fetch = TRUE, stringsAsFactors = FALSE)
我正在查看数据库1,并且B和C列中没有任何值。因此,如果我在A中输入的值是它们在A列中的值,则应该有与此项目相关的信息列表。然而 没有错误消息,但没有任何显示。