从两个不同表中的数据库中获取数据

本文关键字:数据库 数据 获取 两个 | 更新日期: 2023-09-27 18:30:49

我正在使用C#(asp.net)。我在同一个数据库中有两个表(数据和详细信息)。

表"数据"

id | chap | unit |
  ----------------
  1| chap1|unit1 |
  2| chap2|unit2 |
  3| chap3|unit3 |

表"详细信息"

id| code| num |
----------------
 1|abc  |2    |
 2|efg  |3    |
 3|hij  |1    |

现在我想从"num"中获取一个值,其中 code="efg"(在"详细信息"表中)。并使用相同的值 (3) 通过 id 从表"data"中获取数据。我正在使用此代码。

OleDbConnection conn = new OleDbConnection(*** ...... *****); 
       OleDbCommand cmd;
       OleDbDataReader reader;
        String query = String.Format("select num from details where code="efg");
        cmd = new OleDbCommand(query, conn);
        reader = cmd.ExecuteReader();
        int num = int.Parse(reader.GetValue(0).ToString());
        query = String.Format("select chap from data where id={0}",num);
         cmd = new OleDbCommand("select lesson from data where id=3", conn);
        reader = cmd.ExecuteReader();

        Label1.Text = reader.GetValue(0).ToString();

但它显示错误。它显示"行/列不存在数据"。

从两个不同表中的数据库中获取数据

您可以使用

SELECT d.chap, d.unit
FROM data d INNER JOIN details de
    ON d.id = de.num
WHERE de.code = 'efg'

SELECT d.chap, d.unit
FROM data d INNER JOIN details de
    ON d.id = de.num
   AND de.code = 'efg'

更多:如果您使用的是SQL-Server,请使用SqlConnection代替OleDbConnection
更多:不要设置连接字符串、数字、日期等的查询格式;使用SqlParameter,所以你不必担心类型和格式!!

或者您可以使用子查询

SELECT * FROM data INNER JOIN 
    (SELECT num FROM details WHERE code='efg') det
ON data.id = det.num