C# MySql查询合并表并填充dataGridView

C# MySql查询合并表并填充dataGridView,c#,mysql,sql,forms,datagridview,C#,Mysql,Sql,Forms,Datagridview,我正在创建一个链接到在线MySql数据库的小型c应用程序,以进一步了解这两方面的知识 在我的数据库中,我有两个表user和dvd,它们的构建方式如下: 用户:ID,GEBRUIKERSNAAM,PASWOORD dvd:ID,标题,DUUR,用户ID,。。。 我现在要做的是从每个表中取出一个列,并在dataGridView中显示它们。 我想要的柱来自表dvd:TITEL和表用户:GEBRUIKERSNAAM dvd使用table user中的ID和table dvd中的外键USERID链接到一个

我正在创建一个链接到在线MySql数据库的小型c应用程序,以进一步了解这两方面的知识

在我的数据库中,我有两个表user和dvd,它们的构建方式如下:

用户:ID,GEBRUIKERSNAAM,PASWOORD dvd:ID,标题,DUUR,用户ID,。。。 我现在要做的是从每个表中取出一个列,并在dataGridView中显示它们。 我想要的柱来自表dvd:TITEL和表用户:GEBRUIKERSNAAM

dvd使用table user中的ID和table dvd中的外键USERID链接到一个用户一个用户多个dvd

因此,我想在我的dataGridView中显示两个列,一个用于dvd的滴度,另一个为kekst,第一个用于dvd的所有者,即GEBRUIKRSNAAM列

为此,我编写了以下代码:

SELECT  'TITEL', dvd.TITEL
FROM xxx.dvd
UNION ALL 
SELECT  'GEBRUIKERSNAAM', user.GEBRUIKERSNAAM
FROM xxx.user
INNER JOIN xxx.dvd ON user.ID = dvd.USERID
WHERE user.ID = xxx.dvd.USERID;
然而,这给了我两个问题:

如果我直接在数据库上使用SQL选项卡 phpMyAdmin它可以工作,但是把两个柱合并成一个我不想要的。我认为这里的问题是联盟的所有部分,但我不知道如何才能做到这一点

如果我尝试使用我的c应用程序使用此代码,则会出现以下错误:Functionality SelectCommand。连接未初始化。我知道问题出在这个查询中,因为如果我用另一个查询尝试它,我的代码就会正常工作。它填充dataGridView

     try
{

    MySqlCommand SelectCommand = new MySqlCommand("SELECT TITEL FROM xxx.dvd UNION ALL SELECT  GEBRUIKERSNAAM FROM xxx.user INNER JOIN xxx.dvd ON user.ID = dvd.USERID WHERE user.ID = xxx.dvd.USERID;");
    myConn.Open();
    MySqlDataAdapter sda = new MySqlDataAdapter();
    sda.SelectCommand = SelectCommand;
    DataTable dbdataset = new DataTable();
    sda.Fill(dbdataset);
    BindingSource bSource = new BindingSource();

    bSource.DataSource = dbdataset;
    dataGridView1.DataSource = bSource;
    sda.Update(dbdataset);

}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
myConn.Close();
欢迎您提供任何帮助、提示或正确的方法来解决此问题的最佳实践
谢谢

我不太清楚你的目标是什么,但也许这其中的一部分可以帮助你:

SELECT U.GEBRUIKERSNAAM, D.TITLE 
FROM dvd D JOIN user U ON D.USERID = U.ID 
WHERE D.ID = 1
这将使用dvd表,并为每个条目查找ID与D.USERID匹配的用户。从该合并行中,它将选择U.GEBRUIKERSNAAM和D.TITLE,但仅在dvd ID为1的情况下产生结果


如果还有其他问题,请发表评论。我希望我正确理解了你的目标。如果您给我一个示例,说明您想要的输出应该是什么样子,并让我编写查询,可能会更简单。

如果我正确理解您的问题,那么您需要显示两列,其中显示wht用户已租用DVD,您应该使用查询:

选择d.TITLE,u.GEBRUIKERSNAAM 从dvd d 内部连接用户u
您好,谢谢您的帮助。我试过你给我的密码,但我遇到了和以前一样的问题。GEBRUIKERSNAAM和TITLE是不同表格中的列。当我运行您提供的代码时,我得到了错误:“字段列表”中的未知列“dvd.TITLE”。我会编辑我的问题,让它更清楚我想得到的是什么。我只是注意到在一个地方你拼写它TITEL,在另一个地方你拼写它TITLE。也许应该是D.TITEL?非常感谢,我真不敢相信我没看到。。。我确实拼错了我的专栏名。