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

时间:2012-04-11 14:13:33

标签: c# asp.net sql sql-server-2008

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

但它显示错误。它显示“行/列没有数据。”

2 个答案:

答案 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