使用 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;
}
听起来你想使用内部联接。
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")