C#SQL - 表列枚举和JOIN

时间:2016-04-12 20:06:10

标签: c# mysql sql-server datagridview

晚安SO社区!

我有一个使用SQL数据库的小型Agenda C#程序。我正在尝试填充DataGridView,但我无法实现我想要做的事情:

对于当前登录的用户,我想在网格视图中显示两种类型的数据。

在DataGridView中,我希望将第一列作为" Tasks",它列举某个部门可以执行的所有任务(在另一个表中给出),第二列是可编辑的TextBox for他做了多长时间的任务。

我的数据库是如何构建的:

Tasks
- IdTask
- Nom
- IdDepartement

Departement
- IdDepartement
- Nom

Events
- IdEvents
- IdTask
- IdDepartement
- DuréeTache
- Date

Users
- IdUsers
- Nom
- IdDepartement
- IsAdmin

(我将修改那些适合他们的表格列。这是我的不好。)

我想要的是这样的东西,但是经过少量修改: MyDataGridView

我希望所有的任务,即使那些没有与之相关的事件的任务,都会出现并且在0:00:00之后,因为他们还没有注册。

目前,只有已注册的活动会显示其相关时间。

输入正确的时间后,我还会在底部添加一个“保存”按钮。

所以,我正在寻找一个SQL Select Query,我不知道如何构建。我查看了内部/全部外部联接,但即使在0:00:00,他们也不会显示所有任务。

如果您需要任何澄清,请告诉我们!

感谢您的帮助!

编辑#1:添加交叉加入后,我获得了这个:AfterModifications

我想要实现的目标看起来更多,但现在我可以看到每个部门的任务,这是不好的。

这是我的SQL查询:SELECT e.IdEvenement \"#\", t.Nom \"Tâche\", e.DuréeTache \"Durée Tâche\" FROM Evenements e LEFT OUTER JOIN Users u on u.IdUser = e.IdUser CROSS JOIN Taches t WHERE u.Nom = '" + this.Text + "' AND e.Date = '" + DTP_Date.Value.ToShortDateString() + "' this.Text将是用户的名称,DTP_Date是仅显示今天任务的DateTimePicker。

1 个答案:

答案 0 :(得分:0)

好吧,所以我在这里和那里尝试了一些东西,最后来到一个解决方案停止使用DataTable绑定到我的DGV,而是手动进行两个单独的查询以获得我想要的结果。一个用于填写给定用户的所有任务,一个用于查找与这些任务/用户组合相关的事件。