Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 关键字“SELECT”附近的语法不正确_Sql_Asp Classic - Fatal编程技术网

Sql 关键字“SELECT”附近的语法不正确

Sql 关键字“SELECT”附近的语法不正确,sql,asp-classic,Sql,Asp Classic,我有一个经典的ASP页面,允许用户搜索物业,还有一个结果页面,然后向拥有匹配物业的物业代理发送电子邮件,让他们知道有租户对他们的物业感兴趣 有些代理可能有多个属性,在这种情况下,代理只需要接收一封电子邮件,而不是他们拥有的每个属性的一封电子邮件 我在ManagementStudio中测试了以下查询,它返回了正确的结果 SELECT DISTINCT CustomerEmail FROM (SELECT ContentID FR

我有一个经典的ASP页面,允许用户搜索物业,还有一个结果页面,然后向拥有匹配物业的物业代理发送电子邮件,让他们知道有租户对他们的物业感兴趣

有些代理可能有多个属性,在这种情况下,代理只需要接收一封电子邮件,而不是他们拥有的每个属性的一封电子邮件

我在ManagementStudio中测试了以下查询,它返回了正确的结果

SELECT DISTINCT CustomerEmail
FROM         (SELECT     ContentID
                       FROM          (SELECT     ContentID
                                               FROM          VWTenantPropertiesResults
                                               WHERE      (ContentStreet = '')
                                               UNION ALL
                                               SELECT     ContentID
                                               FROM         VWTenantPropertiesResults AS VWTenantPropertiesResults_2
                                               WHERE     (ContentTown = 'Hull')
                                               UNION ALL
                                               SELECT     ContentID
                                               FROM         VWTenantPropertiesResults AS VWTenantPropertiesResults_1
                                               WHERE     (ContentPostCode = 'HU7')) AS qi
                       GROUP BY ContentID
                       HAVING      (COUNT(*) >= 2)) AS q INNER JOIN
                      VWTenantPropertiesResults AS r ON r.ContentID = q.ContentID
WHERE     (r.ContentBedRooms BETWEEN 1 AND 4) AND (r.ContentPrice BETWEEN 50 AND 500)
但是,当我在页面中运行以下代码时,它会在关键字“SELECT”附近返回错误语法

rsemailagents.Source = "SELECT DISTINCT CustomerEmail"
rsemailagents.Source = rsemailagents.Source& "FROM    ("
rsemailagents.Source = rsemailagents.Source& "        SELECT  ContentID"
rsemailagents.Source = rsemailagents.Source& "        FROM    ("
rsemailagents.Source = rsemailagents.Source& "                SELECT  ContentID"
rsemailagents.Source = rsemailagents.Source& "                FROM    VWTenantPropertiesResults"
rsemailagents.Source = rsemailagents.Source& "                WHERE   ContentStreet = '" & Replace(rspropertyresults__varReqStreet, "'", "''") & "'"
rsemailagents.Source = rsemailagents.Source& "                UNION ALL"
rsemailagents.Source = rsemailagents.Source& "                SELECT  ContentID"
rsemailagents.Source = rsemailagents.Source& "                FROM    VWTenantPropertiesResults"
rsemailagents.Source = rsemailagents.Source& "                WHERE   ContentTown = '" & Replace(rspropertyresults__varReqTown, "'", "''") & "'"
rsemailagents.Source = rsemailagents.Source& "                UNION ALL"
rsemailagents.Source = rsemailagents.Source& "                SELECT  ContentID"
rsemailagents.Source = rsemailagents.Source& "                FROM    VWTenantPropertiesResults"
rsemailagents.Source = rsemailagents.Source& "                WHERE   ContentTrimmedPostCode LIKE '" & Replace(varPostcode, "'", "''") & "%'"
rsemailagents.Source = rsemailagents.Source& "                ) qi"
rsemailagents.Source = rsemailagents.Source& "        GROUP BY"
rsemailagents.Source = rsemailagents.Source& "                ContentID"
rsemailagents.Source = rsemailagents.Source& "        HAVING  COUNT(*) >= 2"
rsemailagents.Source = rsemailagents.Source& "        ) q "
rsemailagents.Source = rsemailagents.Source& "JOIN    VWTenantPropertiesResults r "
rsemailagents.Source = rsemailagents.Source& "ON      r.ContentID = q.ContentID "
rsemailagents.Source = rsemailagents.Source& "WHERE   ContentBedrooms BETWEEN " & Replace(rspropertyresults__varBedroomsNoMin, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "AND     " & Replace(rspropertyresults__varBedroomsNoMax, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "AND     ContentPrice BETWEEN " & Replace(rspropertyresults__varPriceMin, "'", "''") & " "
rsemailagents.Source = rsemailagents.Source& "AND     " & Replace(rspropertyresults__varPriceMax, "'", "''") & " " & varSQL & " "
我想知道是否有人知道为什么DISTINCT在代码中不起作用


谢谢。

在这行末尾的字符串中加一个空格

改变

对此


在这行末尾的字符串中加一个空格

改变

对此

客户电子邮件后面需要有空格

rsemailagents.Source = "SELECT DISTINCT CustomerEmail "
客户电子邮件后面需要有空格

rsemailagents.Source = "SELECT DISTINCT CustomerEmail "

我没有读全部内容,但在第一行末尾,空白处不见了:-


我发现在每一行的开头添加空格更容易,因为您可以很容易地看到是否缺少空格。当然,这仍然是一段难看的代码,就像将sql语句像这样组合在一起时一样。

我没有阅读全部内容,但在第一行末尾,空白处缺失了:-


我发现在每一行的开头添加空格更容易,因为您可以很容易地看到是否缺少空格。当然,它仍然是难看的代码,像这样将sql语句放在一起时总是如此。

在您显示的sql代码和ASP代码呈现的内容之间存在差异。您应该从ASP页面输出代码以查看发生了什么


LIKE语句中%符号前缺少一个引号。

显示的SQL代码与ASP代码呈现的内容之间存在差异。您应该从ASP页面输出代码以查看发生了什么


LIKE语句中在%符号前缺少一个引号。

尝试打印RSEMailAgent。来源并与您在管理研究中测试的查询进行比较您还应该能够看到发送到服务器并使用SQL Profiler执行的SQL。获取文本数据并尝试在SSMSTry中运行它以打印rsemailagents.Source并与您在Management Studio中测试的查询进行比较您还应该能够看到发送到服务器并使用SQL Profiler执行的SQL。获取文本数据并尝试在SSMSHey中运行它,感谢您发现了空间的问题。真不敢相信我看了这么久的代码。我需要休息一下。Lol。由于某些原因,它仍然会向每个电子邮件地址发送多份电子邮件副本我建议把它作为一个单独的问题来回答,以避免使你们已有的答案无效。嘿,伙计们,谢谢你们在空白处发现了这个问题。真不敢相信我看了这么久的代码。我需要休息一下。Lol。由于某些原因,它仍然会向每个电子邮件地址发送多份电子邮件副本我建议把它作为一个单独的问题来回答,以避免使你已有的答案无效。
rsemailagents.Source = "SELECT DISTINCT CustomerEmail"
rsemailagents.Source = "SELECT DISTINCT CustomerEmail "