我对数据库以及如何显示有关主键和外键的信息有疑问。
例如有三张表; 员工
、Employee_tickets
和Employee_comments
。
每个员工
可以拥有多张票
以及多条评论
。外键放置在“员工票证”和“员工评论”表中。我的应用程序是使用 Visual Studio 在 vb.net 中构建的,它是一个桌面应用程序。我如何查询员工姓名(“Jon Doe”)并在网格中显示他的所有票证以及人们随着时间的推移对他做出的所有评论?我在 sql 数据库上创建了一个 View ,该 View 返回我需要的所有信息,但对于(“Jon Doe”)下列出的每张票, View 显示每张票的员工姓名。有没有办法只显示员工姓名一次,然后显示该特定个人下列出的每张票证,而无需再次显示员工姓名,或者我是否必须创建单独的窗口来隔离所有这些?
这似乎是一个非常愚蠢的问题,我一生都无法弄清楚如何正确显示这种情况下所需的内容。
以下是我试图解释的示例:
因此,对于 troy,在 Employee Names 表中输入了一个员工姓名,在 CWB 表中输入了一张 CWB 票据,但在 PQR Ticket 表中输入了两张 PQ 卡。我如何才能只显示 Troy 的一行和他的 CWB 的一行,因为表中只输入了其中的一行,然后是他名下的 PQR 卡的两行?
我创建了一个 View ,它将所有信息收集到一个 View 本身中,然后将 datagridview 绑定(bind)到该 View 。
最佳答案
您的问题与数据库无关。相反,问题在于您有一个实体(员工),该实体有两个与其关联的单独集合(票证和评论),并且您希望显示这两个集合的内容。
在数据网格中执行此操作很困难,因为在其最简单的体现中,它旨在显示一组相似项。
我可以想到多种可能性:
- 在代码中,将每个集合转换为单个字符串值,并在包含员工姓名的行上显示该单个字符串值。此转换可以是用逗号分隔集合中每个项目的字符串化版本(如 BS123 在评论中建议的那样),也可以只是一个摘要(例如“5 Tickets”)。
- 将基本员工信息放入一个数据网格中,然后在其下方添加两个附加数据网格,一个绑定(bind)到 Tickets 集合,另一个绑定(bind)到 Comments 集合。
- 将数据网格直接嵌入到主数据网格中,一个嵌入“工单”列,一个嵌入“评论”列,并将每个数据网格绑定(bind)到员工中相应的集合。
您的数据库结构是正确的,所以不要更改它,您只需要解决表示问题。
关于mysql - 如何消除数据库表行重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27335174/