C# 使用Visual Studio查询生成器筛选数据

C# 使用Visual Studio查询生成器筛选数据,c#,asp.net,sql,visual-studio-2012,C#,Asp.net,Sql,Visual Studio 2012,目前,我在MS SQL Server中创建了两个表(postingstable和usertable),它们将输出到visual studio 2012的网格视图和详细信息视图。我试图找到一种方法来确保当详细信息视图被分页到某个用户(只有两个用户)时,只有该用户过去发布的信息才会显示在gridview中 postings表有一个ID(主键),分为两部分,第一部分是该海报的唯一标识符,第二部分是该帖子的唯一标识符。对于Poster1的ID为4567898765456789、4567887654、23

目前,我在MS SQL Server中创建了两个表(
postings
table和
user
table),它们将输出到visual studio 2012的网格视图和详细信息视图。我试图找到一种方法来确保当详细信息视图被分页到某个用户(只有两个用户)时,只有该用户过去发布的信息才会显示在gridview中

postings
表有一个
ID
(主键),分为两部分,第一部分是该海报的唯一标识符,第二部分是该帖子的唯一标识符。对于Poster1的ID为4567898765456789、4567887654、234565432123、456788987654、99999999等,Poster2的ID为98765678987、987654866、98765678987、28282828282、98765678987、1111111等,总共大约有700个条目

在用户表中,还有一个与海报相同的唯一ID,例如Poster1的ID为45678987687654_98765456789,Poster2的ID为98765678987_987654866。我尝试在VisualStudio的query builder中按=、如%和CONTAINS进行筛选,因为理论上,如果对POST和USER的ID的第一位数字进行分析和比较,那么就可以实现规范。因为可以将详细信息视图中的当前ID与所有gridview ID进行比较,只有那些相似且共享前15位左右数字的ID才会被接受到详细信息视图中


然而,我在查询生成器中尝试使用
Post\u Id=table\u Id
或类似的/contains格式来执行此操作的所有方法都不起作用。如果有其他方法可以做到这一点,或者如果对当前的方法有轻微的修改,那么这将是非常好的消息。

您需要做的第一件事是更改postings表。将两个值连接在一起形成PK,将其拆分为两列,第一列包含用户id,第二列包含生成的帖子的唯一id

完成后,将PK设置为两者的组合,并告诉db postings中的userId是引用User表PK的FK

一旦这样做了,数据将以VS可能更好地理解的格式显示,数据库设计肯定会得到改进

编辑

创建FK的SQL代码:

ALTER TABLE postings  WITH CHECK ADD  CONSTRAINT [FK_postings_user] FOREIGN KEY([userId])
REFERENCES user ([userId])
GO

ALTER TABLE postings CHECK CONSTRAINT [FK_postings_user]
GO
如果postings.UserId中存在的值在user.UserId中没有匹配的值,则此操作将失败。要进行检查,请运行以下操作:

挑选* 从张贴p u.UserId=p.UserId上的左外部联接用户u 其中u.UserId为null


这将给出一个没有匹配的用户行的发布行列表-那些数据转换可能有问题的行?或者已经存在“孤立”数据。

嘿,你的问题需要更好的格式。它看起来很厚重。不可理解。嗨,谢谢你的评论。对此表示歉意,我认为我的问题很复杂,因为情况本身很复杂:P不确定我如何才能做得更好,哪些部分需要进一步澄清?至少如果你能做的话,请让问题更具可读性。已经说过,帖子表有700多个条目,因此手动将它们分开可能不太理想。sql server中是否有任何方法可以以这种方式获取字符串条目等,并从一个实体中创建两个实体?可能使用左/右语法,但不确定。事实上,原始数据来自excel文件,因此支持向后浓缩,因此将尝试使用。如果用户id为固定长度(显示的数据中有24个字符),则可以使用select left(full_poster_key,24)获取用户id部分,然后使用right()的组合遗憾的是,用户ID的长度大多不同,因此需要相当多的润滑脂(因为excel的反向连接只工作了一半的时间)。无论如何,我知道有单独的列,尽管DB不允许像你描述的那样链接FKs,这是不幸的,因为它是优雅地使用数据。关于如何将gridview条目限制为与detailsview的SqlDataSource中的条目具有相同id的条目,有什么想法吗?恐怕没有关于网格的帮助:我不使用SqlDataSource。在FK上,我很惊讶。这是标准功能。你用的是什么数据库?