Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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
Php 如何查找不在主ID表中的ID_Php_Sql_Sql Server_Asp Classic - Fatal编程技术网

Php 如何查找不在主ID表中的ID

Php 如何查找不在主ID表中的ID,php,sql,sql-server,asp-classic,Php,Sql,Sql Server,Asp Classic,假设我有一个产品的主表,另一个表保存产品ID的列表 Table name: Products -------------------- ProductID, Title, Price 1, Title 1, 12.00 2, Title 2, 15.00 4, Title 4, 11.50 8, Title 8, 13.89 11, Title 11, 12.00 Table n

假设我有一个产品的主表,另一个表保存产品ID的列表

  Table name: Products  
 --------------------
 ProductID, Title, Price  
       1, Title 1, 12.00  
       2, Title 2, 15.00  
       4, Title 4, 11.50  
       8, Title 8, 13.89  
       11, Title 11, 12.00  

     Table name: ListOfProducts  
      --------------------------
       SomeID, ProductIDs  

         34, 4,8,1  
         35, 8,10,2  
现在,您可以看到在表
ListOfProducts
中,记录为
SomeID=35
,产品列表为
8,10,2
。如何使用SQL快速查找无效的
ProductID 10
,因为它不在主表Products中

我的程序实际上是在classicASP(legacy)中,数据库是在MS SQL中。我可以在ASP中循环遍历产品列表中的记录,但是如何使用快速SQL查找任何无效的产品ID?在这种情况下,当程序循环记录
35
时,脚本应返回
ProductID 10

这看起来很简单。但我就是想不出一个好的解决办法。这能做到吗? 请帮忙


谢谢。

您不应该将ID存储为逗号分隔的列表,这更像是一种多对多关系。您应该有一张类似以下的桌子:

SomeID | ProductID
-------------------
34     | 4
34     | 8
34     | 1
35     | 8
35     | 10
35     | 2

如果您确实必须使用逗号分隔的列表,那么您需要创建某种类型的

read
MySQL FIND\u IN_SET()
。我实际上使用的是MS SQL。MS SQL中是否有类似的函数?无论如何,我是新手,一些代码示例会很好。谢谢。据我所知,MS-SQL没有本机拆分函数。请阅读本文。这就是您所需要的:但只有在您规范化表之前。我建议您不要延迟采用该路径。使用规范化数据库会容易得多:)不幸的是,ProductID当前存储在列表中。这没有问题,请解析列表并将其放入表中。不要仅仅因为“它是这样做的”,就继续进行一个糟糕的设计,当然,除非绝对没有其他选择。没有数据库管理员会建议您将列表存储在单个字段中。你所看到的是一个糟糕的设计创可贴!对于糟糕的规范化,我真的别无选择,只能继续使用它,因为这是一个更大程序的一部分。