列名称无效 Menu_mkey

Invalid column name Menu_mkey

通过代码调试时,出现错误

Invalid column name Menu_mkey

这是代码

string strsqlflag = "select count(*) from WMS_User_Rights where User_Id='" + Hid_Selected_user.Value + "'  and delete_flag='N' ";


        if (Dt.Rows[e.Row.RowIndex]["child_menu_mkey"].ToString() == "0")
        {
            strsqlflag += " and  MENU_MKEY = '" + Dt.Rows[e.Row.RowIndex]["MKEY"] + "'";
        }
        else
        {
            strsqlflag += " and  MENU_MKEY = '" + Dt.Rows[e.Row.RowIndex]["child_menu_mkey"] + "'";
        }

生成了以下查询

select count(*) from WMS_User_Rights where User_Id='1'  and delete_flag='N'  and  MENU_MKEY = '1'

现在,我也想要 Menu_mkey,但问题是它来自另一个 table,它来自 table WMS_menu_rights

如何实现?

旁注:- 我正在使用 SQL-server 2005

使用 SQL Joins 到 link 查询中的那些 table。

例如:

string strsqlflag = "select count(*) from WMS_User_Rights Inner join WMS_Menu_Rights on WMS_User_Rights.somefield=WMS_Menu_Rights.somefield where WMS_User_Rights.User_Id='" + Hid_Selected_user.Value + "'  and WMS_User_Rights.delete_flag='N' ";

    if (Dt.Rows[e.Row.RowIndex]["child_menu_mkey"].ToString() == "0")
    {
        strsqlflag += " and  WMS_Menu_Rights.MENU_MKEY = '" + Dt.Rows[e.Row.RowIndex]["MKEY"] + "'";
    }
    else
    {
        strsqlflag += " and  WMS_Menu_Rights.MENU_MKEY = '" + Dt.Rows[e.Row.RowIndex]["child_menu_mkey"] + "'";
    }

此处 somefield 在查询中 strsqlflag 表示在两个 table 中共有的任何字段。

您必须为此编写一个 INNER JOIN 查询:

select count(*) from WMS_User_Rights INNER JOIN WMS_menu_rights on WMS_menu_rights.someField = WMS_User_Rights.someField where User_Id='1'  and delete_flag='N' and MENU_MKEY = '1'