1

C#(asp.net)を使用しています。同じデータベースに 2 つのテーブル (データと詳細) があります。

テーブル「データ」

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 を使用している場合は、代わりにSqlConnectionOleDbConnectionを使用します。
詳細: 文字列、数値、日付などを結合してクエリをフォーマットしないでください。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 に答える