Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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:使用条件显示链接选项_Sql_Asp Classic_Vbscript_Ado - Fatal编程技术网

SQL:使用条件显示链接选项

SQL:使用条件显示链接选项,sql,asp-classic,vbscript,ado,Sql,Asp Classic,Vbscript,Ado,我正在尝试使用两个表,根据条件为用户提供一个菜单选项 我们有一个针对不同城镇的目录网站,每个城镇管理员都可以将子类别添加到主要类别中,以自定义其目录结构,但目前允许他们将子类别添加到已填充广告的其他子类别中,这是不应该的 我只想在没有广告添加到另一个子类别时显示“添加子类别”选项 例如,在所有城镇目录中都有一个称为“会计师”的子类别。它在'Brentwood'目录中填充客户机广告,但不在'Shrewsbury'目录中 如果使用下表和列中的数据满足以下三个条件,我只想显示“添加子类别”选项: “目

我正在尝试使用两个表,根据条件为用户提供一个菜单选项

我们有一个针对不同城镇的目录网站,每个城镇管理员都可以将子类别添加到主要类别中,以自定义其目录结构,但目前允许他们将子类别添加到已填充广告的其他子类别中,这是不应该的

我只想在没有广告添加到另一个子类别时显示“添加子类别”选项

例如,在所有城镇目录中都有一个称为“会计师”的子类别。它在'Brentwood'目录中填充客户机广告,但不在'Shrewsbury'目录中

如果使用下表和列中的数据满足以下三个条件,我只想显示“添加子类别”选项:

“目录”表:它必须是使用“特许经营GID”列的当前特许经营城镇 “目录”表:它必须应用于每个单独的子类别GID列 “客户端”表:没有注册要在子类别GID列中列出的客户端 因此,使用这些表列的组合,使用“iAdvertCount”作为计数器,使用“ClientGID”检查该特定子类别中是否存在广告订阅;此外,它只适用于当前的特许经营网站特许GID

我可以从一个表中选择信息,但不能从多个表中选择——因此,我希望您能帮助我如何从上述列和表中选择所需的信息

下面是我对“Directories”表的了解程度,但还需要从“Clients”添加Client GID条件:

Dim iAdvertCount

SQLCommand = "SELECT COUNT(*) AS Counter FROM Directories WHERE GID is not null AND FranchiseGID is not null"
rsTemp.Open SQLCommand, objConn, adOpenStatic, adLockReadOnly
iSubscriptionCount = rsTemp("Counter")
rsTemp.Close
if iSubscriptionCount = 0 then
    %><a href="AddDirectory.asp?PGID=<% = rsDirectory("GID") %>"><% = GetIcon("Add", "Add Sub Directory", 25, True) %></a><%
end if
到目前为止,我能够在任何网站上隐藏“添加子类别”选项,例如包含ClientGID的Brentwood目录,但它适用于所有子类别,无论它们是否包含客户端订阅/广告


我希望有人能帮助我,并真正理解我写的东西,以某种方式帮助,因为它将帮助很多

我希望这不仅仅是一个众所周知的暗中拍摄

我认为您需要使用exist运算符

where子句中使用确定子查询是否返回结果

因此,您的查询可能如下所示:

SELECT COUNT(*) AS Counter
  FROM Directories
 WHERE GID is not null
   AND FranchiseGID is not null
   AND NOT EXISTS(SELECT 'ARBITRARY VALUE'
                    FROM clients
                   WHERE clients.gid = directories.gid)
exists操作符利用了一个函数,这就是为什么我们能够引用directories表,即使它不在子查询的from子句中。因此,如果子查询返回任何内容,它将不会返回给count函数进行计数


您可能需要更改子查询的where子句以使其正常工作,因为我不确定数据库是如何构造的

当admin特许GID为“drop table uvw\u DirectoryBrowser\u Adverts select”时会发生什么情况?我不理解这个问题,并且缺少大量上下文,并且缺少大量多余的信息providedSam指出,您的代码可能容易受到名为SQL注入的黑客技术的攻击。用户是否可以输入任何内容来设置AdminGid的值?因为如果他们将其设置为Sam向您显示的值,则生成的SQL命令将是:从uvw_DirectoryBrowser_广告中选择COUNT*作为计数器,其中。。。和delegategid=Drop table uvw_DirectoryBrowser_Adverts select-它将选择一些数据,然后删除一个表,然后选择一个常量。做一个谷歌搜索避免SQL注入看到更多关于这方面的。应该能够给你更多的帮助,如果你给我们更多的细节。表格uvw_目录浏览器_广告是什么样子的?给我们提供列名和数据类型。另外,如何判断子类别是否已经有广告?如果您不能告诉我们您想做什么,您肯定无法告诉SQL Server您想做什么。管理员应该只有在子类别中没有广告时才能看到链接。我不清楚你的数据是如何构造的。你能帮我理解目录和客户表吗?目录有一个子类别的会计师和特许经营id brentwood或shrewsbury的基础上的例子。客户表中是否记录了Brentwood会计师的广告?你想知道每个特许经营的广告数量吗?只返回没有广告的地方的列表?给定特许经营权和子类别,有多少广告?我们要解决的问题是什么?