【问题标题】:How to add data in datagridview from two different sql tables? [closed]如何从两个不同的 sql 表在 datagridview 中添加数据? [关闭]
【发布时间】:2020-04-13 05:47:52
【问题描述】:

我需要在 DataGridView 中显示 mysql 数据库中两个不同表的数据? 当我使用一张表中的日期时,我会这样做:

 using (MySqlConnection sqlConn = new MySqlConnection(connectionString))
        {
            sqlConn.Open();

            MySqlDataAdapter sqlDataAdapter = new MySqlDataAdapter("SELECT * FROM POSAO", sqlConn);
            DataTable dataTable = new DataTable();
            sqlDataAdapter.Fill(dataTable);
            dataTable.Columns.Add()

            dgvPoslovi.AutoGenerateColumns = false;
            dgvPoslovi.DataSource = dataTable;
        }

如何处理来自两个不同表的数据?

【问题讨论】:

  • 您是如何获取数据的?你能显示minimal reproducible example吗?
  • 我编辑了我的帖子。立即查看。
  • 您只能将一个 DataTable 附加到您的 DataGridView。您需要某种方法将两个 Sql 表合并为一个。您可以通过 Sql 命令或通过 c# 来做到这一点。
  • 如果两个表格列标题不同怎么办?

标签: c# mysql winforms


【解决方案1】:

您应该在查询中使用 UNION 子句,为简单起见假设您有以下 2 个具有以下列名称的表

学生

ST_ROWID、ST_NAME、ST_PHONE

教师

TC_ROWID、TC_NAME、TC_PHONE

SELECT ST_NAME AS FULLNAME, ST_PHONE AS PHONENUMBER FROM STUDENTS  
UNION
SELECT TC_NAME AS FULLNAME, TC_PHONE AS PHONENUMBER FROM TEACHERS

上述查询将返回相同结果中的所有教师和学生。如果您需要确定哪个记录是学生或教师,您可以在每个选择语句中添加一个假字段,如下所示

SELECT ST_NAME AS FULLNAME, ST_PHONE AS PHONENUMBER, 'STUDENT' as PERSON_TYPE FROM STUDENTS  
UNION
SELECT TC_NAME AS FULLNAME, TC_PHONE AS PHONENUMBER, 'TEACHER' as PERSON_TYPE FROM TEACHERS

注意为了使 UNION 工作,两个 select 语句需要具有相同的列名

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多