我有点坚持如何构建一个有效的查询,该查询返回以下 EAV 结构的数据。
今天,产品表已经存在,包含 4 个固定字段。我们希望升级系统,允许无限量的附加产品字段,由每个产品的制造商定义。我们称这些附加字段为“参数”。
参数可以是以下数据类型:
基于此,我创建了以下数据库模型:
:
我需要在 ASP.NET C# 中构建一个网页,该网页显示所有产品数据的列表,包括每个定义的参数及其对该产品的值。我需要能够通过搜索任何字段/参数来过滤列表。此列表还需要可在任何字段/参数上排序。
我尝试通过外部连接 Product - ProductParameter - ProductParametervalueListItem - ParameterValueListItem 来过滤列表,以获得包含所有数据的表结果,然后使用由 Web 应用程序构建和传递的动态 where 子句过滤该列表。这在您搜索 1 个参数时有效,但是当您开始搜索多个参数时,您会得到不正确的结果,因为每个参数在表结果中都是不同的行,并且参数 A 和 B 之间根本没有“与”匹配,因为它们不存在于同一记录(行)中。
谁能建议我如何实现这一目标?最完美的解决方案是 1 个表结果,其中包含所有数据,并且每个参数都显示为同一产品行中的一列。这是否太复杂而无法在数据库级别处理?
感谢您阅读到这里。欢迎任何建议。