1

我正在使用 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    |

现在我想从 code="efg" 的 "num" 中获取一个值(在表 "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();

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

4

2 回答 2

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所以你不必担心类型和格式!

于 2012-04-11T14:16:47.537 回答
-1

或者您可以使用子查询

SELECT * FROM data INNER JOIN 
    (SELECT num FROM details WHERE code='efg') det
ON data.id = det.num
于 2012-04-11T14:21:06.763 回答