Как объединить два оператора sql или как получить данные из двух таблиц для входа в систему?

#sql #asp.net

#sql #asp.net

Вопрос:

Для входа пользователя мы должны получить имя пользователя и пароль из двух разных таблиц, поскольку для student мы извлекаем их из Student_Main_Email , а в случае факультета мы извлекаем их из Faculty_Revewier_Email таблицы, поэтому в хранимой процедуре мы объединяем два запроса выбора, для Student_Main_Table которых эта логика работает, но не для другого. Не могли бы вы предложить нам лучшее решение, как мы можем объединить эти два запроса.

 ALTER procedure [dbo].[SpUserLogin] 
@Email nvarchar(100),
@Password nvarchar(15)
as
Begin 
select count(Email) from Student_Main_Email
where [Email]=@Email and [Password]=@Password

Union All 
select count(Email) from Faculty_Reviewer_Email
where [Email]=@Email and [Password]=@Password
End
  

И ASP.NET Код

 protected void Login_button_Click(object sender, EventArgs e)
    {
        string connectionstring = "Data Source=NADIR\SQLEXPRESS;Initial Catalog=PHD_System_new;Integrated Security=True";
        SqlConnection con = new SqlConnection(connectionstring);
        con.Open();
        SqlCommand cmd = new SqlCommand("SpUserLogin", con);
        SqlParameter paramusername = new SqlParameter("@Email", Login_Email.Value);
        SqlParameter parampassword = new SqlParameter("@Password", Login_Password.Value);
        cmd.Parameters.Add(paramusername);
        cmd.Parameters.Add(parampassword);

        cmd.CommandType = CommandType.StoredProcedure;

        int returncode = (Int32)cmd.ExecuteScalar();

        if (returncode == 1)
        {
            Session["LoginUserName"] = Login_Email.Value;

            Server.Transfer("WebForm1.aspx");
            //lblMessage.Text = "User Name or Password is valid.";

        }
        else {
            lblMessage.Text = "Invalid User Name or Password.";
        }
        con.Close();
    }
  

Комментарии:

1. Добавьте свой код в виде текста, а не в виде изображения

Ответ №1:

вы можете добавить вспомогательный столбец для определения источника каждой строки и выбора в соответствии с различными случаями:

 select count(Email), 'student' as source from Student_Main_Email
where [Email]=@Email and [Password]=@Password

Union All 
select count(Email), 'faculty' as source from Faculty_Reviewer_Email
where [Email]=@Email and [Password]=@Password
  

Комментарии:

1. Спасибо, сэр, позвольте мне попробовать

Ответ №2:

 Alter proc login(     --exec login 'ravi','123',''
@Email varchar(50),
@Password varchar(50),
@Msg varchar(50) output
)
as
begin 
if exists(select * from student_mail_Email  where @Email=Email and @Password=Password)
        begin
        select @Msg='Success'
        end
        else

if exists(select * from Faculty_Revewier_Email where @Email=Email and @Password=Password)
        begin
        select @Msg='Success'
        end
        else

begin
select @Msg='User Does not exists'
end
select @Msg
end
  

введите описание изображения здесь