我对数据库以及有关主键和外键的信息显示方式有疑问。
例如,有三个表。 Employees
,Employee_tickets
和Employee_comments
。
每个employee
可以有多个tickets
,也可以有多个comments
。外键位于“员工票证”和“员工评论”表中。我的应用程序是使用Visual Studio在vb.net中构建的,它是一个桌面应用程序。我如何查询说..雇员姓名('Jon Doe')并在网格中显示他的所有票证以及人们随着时间对他发表的所有评论?我已经在sql数据库上创建了一个视图,该视图返回我需要的所有信息,但对于('Jon Doe')下列出的每张票证,该视图都会显示,并且每张票证均显示员工姓名。有没有一种方法可以只显示一次雇员姓名,然后只显示该特定个人下的每张票证,而无需再次显示“雇员姓名”,还是我必须使用单独的窗口来分隔所有这些?
这似乎是一个很愚蠢的问题,我无法一生都想出如何正确显示这种情况下的要求。
这是我要解释的示例:
因此,对于Troy,在Employee Names表中输入了一个雇员名称,在CWB表中输入了一张CWB票,但是在PQR Ticket表中输入了两个PQ卡。如何在Troy中仅显示一行,而在他的CWB中仅显示一行,因为在表中每个输入只有一个,而在他名字下的PQR卡只有两行?
我创建了一个视图,该视图将所有信息收集到一个视图本身中,然后将datagridview绑定到该视图。
最佳答案
您的问题与数据库无关。而是,问题在于您有一个实体(员工),该实体具有与之关联的两个单独的集合(票证和注释),并且您想显示两个集合的内容。
在数据网格中执行此操作很困难,因为它最简单的化身旨在显示一组相似项。
我可以想到许多可能性:
在您的代码中,将每个集合转换为单个字符串值,并在具有员工姓名的行上显示该单个字符串值。这种转换可以是逗号分隔集合中每个项目的字符串化版本(如BS123在评论中所建议的),也可以只是摘要(例如“ 5张票证”)。
将基本员工信息放在一个数据网格中,然后在其下有两个其他数据网格,一个绑定到Tickets集合,另一个绑定到Comments集合。
将数据网格直接嵌入到主数据网格中,在“票证”列中嵌入一个,在“注释”列中嵌入一个,并将每个网格绑定到员工中的适当集合。
您的数据库结构是正确的,因此请不要更改它,您只需要解决表示问题。
关于mysql - 如何消除数据库表行重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27335174/