0

私は次のVB.NETコードを持っています:

    Dim conn As New MySql.Data.MySqlClient.MySqlConnection(ConnectionString)
    conn.Open()

    Dim sql = "SELECT * FROM users"
    Dim com = New MySql.Data.MySqlClient.MySqlCommand(sql, conn)

    Dim ds As New DataSet("dsUsers")

    Dim da As New MySql.Data.MySqlClient.MySqlDataAdapter()
    da.SelectCommand = com
    da.TableMappings.Add("Table", "Users")
    da.Fill(ds)

    sql = "SELECT * FROM messages"
    com = New MySql.Data.MySqlClient.MySqlCommand(sql, conn)

    Dim da2 As New MySql.Data.MySqlClient.MySqlDataAdapter()
    da2.SelectCommand = com
    da2.TableMappings.Add("Table", "Messages")
    da2.Fill(ds)

    Dim dr As DataRelation
    Dim col1 As DataColumn
    Dim col2 As DataColumn

    col1 = ds.Tables("Users").Columns("id")
    col2 = ds.Tables("Messages").Columns("users_id")
    dr = New DataRelation("UsersMessages", col1, col2)

    ds.Relations.Add(dr)

基本的に、私は 2 つのクエリを実行します。1 つ目はすべてのユーザーを取得し、2 つ目はすべてのメッセージを取得します。DataSet 内に 2 つのテーブルを定義し、DataRelation を介してそれらをリンクして、Users テーブルが Messages テーブルの親になるようにします。

これは、2 つのテーブルからすべての行を選択したい場合に機能しますが、4 つのネストされたテーブルと条件付きクエリを含むより複雑な構造の場合はどうなるでしょうか?

SELECT t1.*, t2*, t3.*, t4.*
FROM table1 t1, table2 t2, table3 t3, table4 t4
WHERE t1.id = 3
      AND t2.t1_id = t1.id
      AND t3.t2_id = t2.id
      AND t4.t3_id = t3.id

この 1 つのクエリから 4 つのテーブルと 3 つの DataRelations を持つ DataSet を作成するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

これを行う唯一の方法は、それを実行するコードを記述することです。つまり、データ セットにテーブルを作成し、テーブル間の関係を設定し、結果から特定のフィールドをテーブルに入力します。

各フィールドがどのテーブルから取得されたか、結果を取得するためにどのテーブルが照会されたかについての情報が結果に含まれていないため、これを自動的に行う方法はありません。

于 2009-04-05T01:40:50.067 に答える