我正在使用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”(在表格“details”中)。并使用相同的值(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();
但它显示错误。它显示“行/列没有数据。”
答案 0 :(得分:2)
您可以使用
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,这样您就不必担心类型和格式了!!
答案 1 :(得分:-1)
或者您可以使用子查询
SELECT * FROM data INNER JOIN
(SELECT num FROM details WHERE code='efg') det
ON data.id = det.num