Php 如何查找不在主ID表中的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
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当前存储在列表中。这没有问题,请解析列表并将其放入表中。不要仅仅因为“它是这样做的”,就继续进行一个糟糕的设计,当然,除非绝对没有其他选择。没有数据库管理员会建议您将列表存储在单个字段中。你所看到的是一个糟糕的设计创可贴!对于糟糕的规范化,我真的别无选择,只能继续使用它,因为这是一个更大程序的一部分。