многоуровневое заполнение treeview из БД

есть 4 таблицы, связанные в порядке подчиненности, пытаюсь создать дерево из их содержимого.

 using System;
 using System.Data;
 using System.Windows.Forms;
 using System.Data.SqlClient;
namespace WindowsFormsApp1
{
public partial class Form3 : Form
{
    private TreeView tree;
    public Form3()
    {
        this.tree = new TreeView();
        this.SuspendLayout();
        this.tree.ImageIndex = -1;
        this.tree.Location = new System.Drawing.Point(8, 8);
        this.tree.Name = "tree";
        this.tree.SelectedImageIndex = -1;
        this.tree.Size = new System.Drawing.Size(276, 248);
        this.tree.TabIndex = 0;
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
        this.ClientSize = new System.Drawing.Size(292, 266);
        this.Controls.AddRange(new System.Windows.Forms.Control[] { this.tree });
        this.Text = "Hierarchical TreeView";
        this.Load += new System.EventHandler(this.Form3_Load);
        this.ResumeLayout(false);

        InitializeComponent();
    }
    string connectionString = "Data Source=localhost;Initial Catalog=bdsi;Integrated Security=SSPI";
    string macroSQL = "SELECT * FROM ВыборМакроОбъект";
    string superSQL = "SELECT * FROM ВыборСуперОбъект";


    private void Form3_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand com = new SqlCommand(macroSQL, con);
        SqlDataAdapter adapter = new SqlDataAdapter(com);
        DataSet ds = new DataSet();

        con.Open();
        adapter.Fill(ds, "ВыборМакроОбъект");
        adapter.SelectCommand.CommandText = superSQL;
        adapter.Fill(ds, "ВыборСуперОбъект");
        adapter.Fill(ds, "ВыборОбъект");

        con.Close();

        DataColumn parentCol = ds.Tables["ВыборМакроОбъект"].Columns["МакроКод"];
        DataColumn childCol = ds.Tables["ВыборСуперОбъект"].Columns["макрообъект"];
        DataRelation relation = new DataRelation("макрообъект", parentCol, childCol);
        ds.Relations.Add(relation);

        foreach (DataRow parent in ds.Tables["ВыборМакроОбъект"].Rows)
        {
            TreeNode nodeParent = tree.Nodes.Add(parent["макрообъект"].ToString());
            foreach (DataRow child in parent.GetChildRows(relation))
            {
                nodeParent.Nodes.Add(child["суперобъект"].ToString());
            }
        }
    }
}
}

Подскажите как добавить остальные две таблицы, уже третий день голову ломаю, перерыл кучу форумов но ничего стоящего не нашел.введите сюда описание изображения

мне нужно чтобы было что то вроде

введите сюда описание изображения

само собой что вместо цифр должны быть данные из таблиц, 0 - ВыборМакроОбъект, 1- ВыборСуперОбъект, - 2 ВыборОбъект, 3 - Позиция, нужно дерево из данных

CREATE TABLE [dbo].[ВыборМакроОбъект]( [МакроКод] [int] IDENTITY(1,1) NOT NULL, [макрообъект] [nvarchar](255) NULL, CONSTRAINT [ВыборМакроОбъект$PrimaryKey] PRIMARY KEY CLUSTERED ( [МакроКод] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]

CREATE TABLE [dbo].[ВыборСуперОбъект]( [СуперКод] [int] IDENTITY(1,1) NOT NULL, [суперобъект] [nvarchar](255) NULL, [макрообъект] [int] NULL, CONSTRAINT [ВыборСуперОбъект$PrimaryKey] PRIMARY KEY CLUSTERED ( [СуперКод] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] 

CREATE TABLE [dbo].[ВыборОбъект]( [ОбъектКод] [int] IDENTITY(1,1) NOT NULL, [объект] [nvarchar](100) NULL, [суперобъект] [int] NULL, CONSTRAINT [ВыборОбъект$PrimaryKey] PRIMARY KEY CLUSTERED ( [ОбъектКод] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] 

CREATE TABLE [dbo].[ВыборПозиция]( [объект] [int] NULL, [позиция СИ] [nvarchar](255) NULL, [НПИ] [nvarchar](255) NULL, [интерфейс] [nvarchar](255) NULL, [ВПИ] [nvarchar](255) NULL, [тип СИ] [nvarchar](255) NULL, [вид МО] [nvarchar](255) NULL, [Код] [int] IDENTITY(1,1) NOT NULL, [измеряемый параметр] [nvarchar](255) NULL, [единица измерения] [nvarchar](255) NULL, CONSTRAINT [ВыборПозиция$Код1] PRIMARY KEY CLUSTERED ( [Код] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]

Ответы (0 шт):