如果某些数据为null,Winforms datagridview将不会加载数据

时间:2016-01-10 10:07:43

标签: c# mysql winforms datagridview

我的数据库中有3个表。学校(一对多) - 学生(一对一) - 金钱。一切正常,但是我有一个datagridview,内部连接所有三个表,但它不会显示任何在money表中没有任何内容的数据。因此,所有已在金钱表中保存信息的学生也会出现,但我也希望看到那些在金钱表中也没有数据的学生。它应该是怎么回事?感谢

2 个答案:

答案 0 :(得分:1)

您可以使用Linq的外部联接来解决它:

List<Person> people = new List<Person> { magnus, terry, charlotte, arlene };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };

var query = from person in people
            join pet in pets on person equals pet.Owner into gj
            from subpet in gj.DefaultIfEmpty()
            select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) };

如果仅使用SQL,则需要在SQL中使用外部联接。

答案 1 :(得分:1)

从那里Using Outer Joins

  

仅当两者中至少有一行时,内部联接才会返回行   与连接条件匹配的表。内连接消除了行   与另一个表中的行不匹配。

如果你想在你的SQL查询中使用没有Money记录的节目行使用LEFT JOIN。

SELECT sch.SomeColumn
FROM School sch
INNER JOIN Students sts ON <some students condition>
LEFT JOIN Money m ON <some money condition>

引用和示例来自Sql Server,但也适用于MySql