c#
  • asp.net
  • sql-server-2005
  • 2015-12-03 7 views -1 likes 
    -1

    При отладке через код, я получаю ошибку, какНедопустимое имя столбца Menu_mkey

    Недопустимое имя столбца 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 тоже, но проблема в том, что она исходит из другой таблицы, которая из таблицы WMS_menu_rights

    Как этого добиться?

    на стороне записки: - Я использую SQL-server 2005

    +1

    использовать Марк [внутреннего соединение] (https://technet.microsoft.com/en-us/library/ms190014 (V = SQL .105) .aspx), чтобы выбрать значения из двух таблиц. –

    ответ

    1

    использование SQL Joins связать эти таблицы в запросе.

    для например:

    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 представляет собой любое поле, которое является общим в обеих таблицах.

    +0

    получение ошибки как «неоднозначное имя столбца» delete_flag'.' – BNN

    +0

    проверить обновленный код.рекламируется 'delete_flag = 'N'' с' WMS_User_Rights.delete_flag =' N''. –

    +0

    да, это работает отлично. большое спасибо. – BNN

    0

    Вы должны написать 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' 
    
    Смежные вопросы