使用 SQL 查询会导致另一个查询

本文关键字:查询 另一个 SQL 使用 | 更新日期: 2023-09-27 18:32:32

所以我正在用名称列表填充一个组合框。现在,单击其中一个名称后,我执行

SELECT Id FROM FIRSTTABLE WHERE Name ='" + ClientComboBox.Text + "'

现在我想获取该 ID 并在 SECONDTABLE 中执行另一个 Sql 查询。但是,在该 SECONDTABLE ID 中称为 ClientId。我也只想填充一次数据网格视图。所以我不想事件显示 FIRSTTABLE 结果,只显示我从 SECONDTABLE 结果中得到的结果。不确定这一切是否有意义,所以如果您有任何问题,请告诉我。

private void ClientComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            var myConnection = new SqlConnection(DBConnectionBox.Text);
            //myConnection.Open();

            var Cmd = new SqlCommand("SELECT Id FROM FIRSTTABLE WHERE Name ='" + ClientComboBox.Text + "';");
            Cmd.Connection = myConnection;
            Cmd.CommandType = CommandType.Text;
            var Cmd2 = new SqlCommand("SELECT * FROM SECONDTABLE WHERE ClientId ='"+"';");
            Cmd2.Connection = myConnection;
            Cmd2.CommandType = CommandType.Text;
            SqlDataAdapter sqlDataAdap = new SqlDataAdapter(Cmd);
            SqlDataAdapter sqlDataAdap2 = new SqlDataAdapter(Cmd2);
            DataTable dtRecord = new DataTable();
            DataTable dtRecord2 = new DataTable();
            sqlDataAdap.Fill(dtRecord);
            sqlDataAdap2.Fill(dtRecord2);
            ClientInfoDGV.DataSource = dtRecord;
            ClientInfoDGV.DataSource = dtRecord2;
        }

使用 SQL 查询会导致另一个查询

听起来你想使用内部联接。

var Cmd = new SqlCommand(@"SELECT Id, SECONDTABLE.* FROM FIRSTTABLE
   JOIN SECONDTABLE ON FIRSTTABLE.Id = SECONDTABLE.ClientId  
   WHERE Name ='" + ClientComboBox.Text + "';")

在单个查询中像这样

SELECT * 
FROM   secondtable 
WHERE  clientid IN (SELECT f.id 
                    FROM   firsttable f
                    WHERE  f.NAME = "clientcombobox.text") 

Exists(首选)

SELECT * 
FROM   secondtable s 
WHERE  EXISTS(SELECT 1 
              FROM   firsttable f 
              WHERE  s.clientid = f.id 
                     AND f.NAME = "clientcombobox.text")