目前我在MS SQL Server(postings
表和user
表)中创建了两个表,输出到visual studio 2012到网格视图和详细信息视图。我试图找到一种方法来确保当详细信息视图被分页到某个用户(只有两个用户)时,那个用户过去发布的唯一帖子将显示在gridview中。
postings
表有ID
(主键),它分为两部分,第一部分是该海报的唯一标识符,第二部分是该POST的唯一标识符。 Poster1的ID为45678987654_98765456789,45678987654_234565432123,45678987654_999999999等,海报2的ID为98765678987_987654866,98765678987_2828288282,98765678987_1111111111,共有700个条目。
在用户表中,还有一个唯一的ID,对于该海报也是如此。 Poster1的ID为45678987654_98765456789,Poster2的编号为98765678987_987654866。我试图在visual studio中使用=和%CONTAINS过滤查询构建器,因为理论上如果分析和比较POST和USER的ID的第一个数字,那么可以实现规范。由于详细信息视图中的当前ID可以与所有gridview ID进行比较,因此只有那些相似并且共享前15个左右数字的ID才会被接受到详细信息视图中。
但是,我尝试在使用Post_Id = table_Id
或类似/包含格式的查询构建器中执行此操作的所有方法都不起作用。如果还有另一种方法可以做到这一点,或者如果对当前方法略有修改,那么听到这个很好。
答案 0 :(得分:0)
您需要做的第一件事就是更改过帐表格。如果您将两个值连接起来制作PK,请将其拆分为两列,第一列包含userId,第二列是您生成的帖子的唯一ID。
完成后,将PK设置为两者的组合,并告诉db,发布中的userId是引用用户表PK的FK。
一旦完成,数据将采用VS可能更好理解的格式,db设计肯定会得到改进。
修改
用于创建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
如果posts.UserId中的值在user.UserId中没有匹配值,那么这将失败。要检查,请执行以下操作:
选择* 来自贴子p 左外连接用户u在u.UserId = p.UserId上 其中u.UserId为空
这将给出一个没有匹配用户行的发布行列表 - 您的数据转换可能有问题?或者有孤儿'数据已经存在。