【问题标题】:Join and where clause with parameters带参数的 Join 和 where 子句
【发布时间】:2014-08-31 02:26:52
【问题描述】:

我有下一个表 COMPI、PRO、COMPRADO 和下一个 SQL 查询和参数 fecha1、fecha2、买办

这在查询中返回语法错误

这段代码有什么问题?? (是 ADODB VBA EXCEL MACRO 的字符串 sql)

SELECT DISTINCT compi.DOCCOMPI,compi.FECHCOMPI,compi.MACOD,compi.MANOM,compi.MAREF,
    compi.MADIM,compi.CPCOMPI,compi.MAUNI,pro.PRONOM,comprado.NOMBRE 
FROM comprado 
INNER JOIN compi ON comprado.CODIGO=compi.COMPRADOR 
INNERJOIN pro   ON compi.NITCOMPI=pro.PRONIT  
WHERE compi.TEMPCOMPI='h' AND 
    compi.FECHCOMPI BETWEEN " & "#" & fecha1 & "#" & 
    "AND " & "#" & fecha2 & "#" & " AND 
    comprado.CODIGO=" & comprador & "

【问题讨论】:

  • 你的innerjoin 需要一个空格,我确信最后的" & " 也不是有效的sql。它看起来像 MS Access VBA?
  • 你用的是什么数据库?
  • Adomar tahnk 你的及时回答我有空间,不工作
  • 发布的代码块不是有效的 SQL,而且它似乎也不是构造字符串的有效语法。我建议您从要发送到数据库的实际 SQL 文本开始,只需使用文字即可。一旦它起作用了,然后将变量放入语句中;并在执行此操作时注意 SQL 注入漏洞。

标签: sql


【解决方案1】:

尽量去掉INNER JOIN之间的空格,字符串用单引号代替双引号:

SELECT DISTINCT compi.DOCCOMPI,compi.FECHCOMPI,compi.MACOD,compi.MANOM,compi.MAREF,
    compi.MADIM,compi.CPCOMPI,compi.MAUNI,pro.PRONOM,comprado.NOMBRE 
FROM comprado 
INNER JOIN compi ON comprado.CODIGO=compi.COMPRADOR 
INNER JOIN pro   ON compi.NITCOMPI=pro.PRONIT  
WHERE compi.TEMPCOMPI='h' AND 
    compi.FECHCOMPI BETWEEN ' & "#" & fecha1 & "#" & 
    ' AND ' & "#" & fecha2 & "#" & ' AND 
    comprado.CODIGO=' & comprador & '

【讨论】:

    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多