从两个不同表中的数据库中获取数据
本文关键字:数据库 数据 获取 两个 | 更新日期: 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