目前,我在MS中创建了两个表(postings表和user表),并将其输出到visual 2012的网格视图和详细信息视图中。我试图找出一种方法,以确保当details视图被分页到某个用户(只有两个用户)时,该用户过去发布的唯一帖子将显示在gridview中。
postings表有一个ID (主键),它分为两部分,第一部分是该海报的唯一标识符,第二部分是该帖子的唯一标识符。对于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 by =中筛选查询生成器,比如%,并包含这些内容,因为理论上,如果对POST和USER的ID的第一个数字进行了分析和比较,那么就可以实现这些规范。因为details视图中的当前ID可以与所有的gridview ID进行比较,并且只有那些相似并且共享前15位左右的ID才会被接受到details视图中。
但是,我在查询生成器中尝试使用Post_Id = table_Id或like/contains格式的所有方法都不起作用。如果有另一种方法来做到这一点,或者对当前的方法进行了轻微的修改,那么这将是一个很好的消息。
发布于 2014-06-18 09:06:08
您需要做的第一件事是更改first表。如果您将两个值连接起来以使PK,则将其拆分为两列,第一列包含userId,第二列为您生成的帖子的唯一id。
完成此操作后,将PK设置为两者的组合,并告诉db,PK中的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中没有匹配值,那么这将失败。若要进行检查,请运行以下命令:
在u.UserId = p.UserId上选择*从帖子p左向外连接用户u,其中u.UserId为null
这将给出没有匹配的用户行的投递行列表--在这些行中,您的数据转换可能有问题?或者已经有“孤儿”数据了。
https://stackoverflow.com/questions/24280250
复制相似问题