从多个表中检索特定值

用户名

我有14张不同类型的员工表。我有一个连接到SQL Server数据库的C#应用​​程序,当我在文本框中键入姓氏时,它会带回带有该姓氏的记录并将其显示在列表框中。

但是,我只用一张桌子就做到了。因此,如果我键入“ Jones”,它将带回并显示一张桌子中的Jones。

我想带回所有14张桌子中的所有Jones。换句话说,当我输入姓氏时,我需要应用程序显示所有14个表中该姓氏的所有记录。

什么是对此的合理方法?如果我和所有员工都只有一张桌子,但是我需要分开,那会容易得多。基本上,当我单击搜索按钮时,我需要该应用程序从具有给定名称的14个表中的任何一个中获取数据。

什么是合适的方法呢?

汤玛索·贝卢佐(Tommaso Belluzzo)

在数据库中定义以下存储过程:

CREATE PROCEDURE GetAll_SP
(
    @FirstName VARCHAR(50)
)  
AS
    BEGIN
        (SELECT 1, first_name, last_name FROM UsersTable1 WHERE first_name = @FirstName)
        UNION
        (SELECT 2, first_name, last_name FROM UsersTable2 WHERE first_name = @FirstName)
        UNION
        (SELECT 3, first_name, last_name FROM UsersTable3 WHERE first_name = @FirstName)
        -- ....
    END

GO

或以下一个代替您不需要对用户位置进行任何控制:

CREATE PROCEDURE GetAll_SP
(
    @FirstName VARCHAR(50)
)  
AS
    BEGIN
        (SELECT first_name, last_name FROM UsersTable1 WHERE first_name = @FirstName)
        UNION ALL
        (SELECT first_name, last_name FROM UsersTable2 WHERE first_name = @FirstName)
        UNION ALL
        (SELECT first_name, last_name FROM UsersTable3 WHERE first_name = @FirstName)
        -- ....
    END

GO

然后,在您的代码中:

String firstName = "Jones";

using (SqlCommand cmd = new SqlCommand("GetAll_SP", m_Connection))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = firstName;

    m_Connection.Open();
    cmd.ExecuteNonQuery();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档