2014-12-24 3 views
3

Не могли бы вы помочь мне с этим утверждением, я пытаюсь получить данные с помощью инструкции SELECT и использовать дату в инструкции INSERT.Использование оператора Select для значения ведомости вставки

Я хочу использовать данные, полученные для ProfileId Значение.

// Get the UserId of the just-added user 
    MembershipUser currentUser = Membership.GetUser(); 
    Guid currentUserId = (Guid)currentUser.ProviderUserKey; 

// Insert a new record into UserPro 
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 

string insertSql = "INSERT INTO User_Friend(ProfileId1, ProfileId) VALUES(@FriendProfileId) SELECT ProfileId FROM User_Profile WHERE UserId = (@UserId)"; 


using (SqlConnection myConnection = new SqlConnection(connectionString)) 
{ 
    myConnection.Open(); 
    SqlCommand myCommand = new SqlCommand(insertSql, myConnection); 
    myCommand.Parameters.AddWithValue("@FriendProfileId", Request.QueryString["ProfileId"].ToString()); 

    myCommand.Parameters.AddWithValue("@UserId", currentUserId); 
    myCommand.ExecuteNonQuery(); 
    myConnection.Close(); 
} 

Как использовать SELECT результат как ProfileId Value.

+0

Возможный дубликат [t-sql insert - select - with parameters] (http://stackoverflow.com/questions/11996549/t-sql-insert-select-with-parameters) – BCdotWEB

ответ

2

Оператор вставки должен быть

INSERT INTO User_Friend(ProfileId1, ProfileId) 
VALUES (@FriendProfileId, 
     (SELECT ProfileId FROM User_Profile WHERE UserId = @UserId)) 

или, может быть SELECT TOP(1) ProfileId, чтобы убедиться, что вы никогда не получите больше, чем 1 значение.

1

Вставка SQL должен быть:

string insertSql = "INSERT INTO User_Friend(ProfileId1, ProfileId) SELECT @FriendProfileId, ProfileId FROM User_Profile WHERE UserId = (@UserId)"; 

Вы просто включить переменные непосредственно в SELECT заявлении в положении, соответствующем имени столбца.

+0

спасибо за ваш повтор, я только выберите ProfileId из userId не оба –

+0

Когда вы включаете такой параметр, он не выбирает из таблицы пользователя, он заменяет значение непосредственно в SQL. Поэтому давайте скажем, что @FriendProfileId установлен в 23, оператор SELECT на самом деле заканчивается SELECT 23, ProfileID FROM user_profile ... –

Смежные вопросы