вставить в таблицу 1 обновить таблицу 2 столбец х из таблицы 1 столбец у - PullRequest
0 голосов
/ 12 февраля 2019

Я новичок в ASP.NET MVC и Sql Server. Попытка вставить в таблицу 1 второй шаг, чтобы обновить таблицу 2, столбец x из таблицы 1, столбец y.Проблема при обновлении обновления всего столбца x

Мои таблицы: таблица Car (CarId CarModel Color LicensePlate CarOdometer)

таблица JobInfo (JobId JobNum Дата StartLocation Место назначения StartOdometer EndOdometer Парковка CarId UserId)

ОБНОВЛЕНИЕ Car SET CarOdometer = (ВЫБЕРИТЕ ТОП-1 EndOdometer ОТ JobInfo ГДЕ CarId = Car.CarId ORDER BY EndOdometer DESC)

Обновить набор автомобилей Car.CarOdometer = JobInfo.EndOdometer из JobInfo, где JobInfo.carId =(ВЫБЕРИТЕ IDENT_CURRENT (JobInfo.CarId));

пытался использовать внутреннее соединение, но не работает

            string query1 = "INSERT INTO JobInfo (JobNum,Date,StartLocation,Destination,EndOdometer,Parking,CarId,StartOdometer)" +
                                                  "VALUES(@JobNum,@Date,@StartLocation,@Destination,@EndOdometer,@Parking,@CarId,@StartOdometer)";


            string query2 = "Update Car SET Car.CarOdometer = (Select top 1 JobInfo.EndOdometer FROM JobInfo INNER JOIN Car ON JobInfo.CarId = Car.CarId "+
                             "ORDER BY JobInfo.EndOdometer desc) WHERE Car.CarId = Car.CarId";
            sqlCon.Open();
            var sqlCmd1 = new SqlCommand(query1, sqlCon);
            var sqlCmd2 = new SqlCommand(query2, sqlCon);

            sqlCmd1.Parameters.AddWithValue("@JobNum", jobModel.JobNum);
            sqlCmd1.Parameters.AddWithValue("@Date", jobModel.Date.ToString());
            sqlCmd1.Parameters.AddWithValue("@StartLocation", jobModel.StartLocation);
            sqlCmd1.Parameters.AddWithValue("@Destination", jobModel.Destination);
            sqlCmd1.Parameters.AddWithValue("@EndOdometer", jobModel.EndOdometer);
            sqlCmd1.Parameters.AddWithValue("@Parking", Convert.ToDecimal(jobModel.Parking));
            sqlCmd1.Parameters.AddWithValue("@CarId", Convert.ToInt32(jobModel.CarId));
            sqlCmd1.Parameters.AddWithValue("@StartOdometer", Convert.ToInt32(jobModel.StartOdometer));
            //Updating CarOdometer from EndOdometer
            sqlCmd2.Parameters.AddWithValue("@CarOdometer", Convert.ToInt32(jobModel.CarOdometer));


            sqlCmd1.ExecuteNonQuery();
            sqlCmd2.ExecuteNonQuery();

после обновления только CarOdometer в CarId = 1 или зависеть от CarId будетсссед должен поменяться и не все записи

Спасибо за потраченное время

1 Ответ

0 голосов
/ 12 февраля 2019

Если вам не нужно изменять все записи, кроме тех, которые включены в таблицу JobInfo, вы можете проверить это:

UPDATE Car SET CarOdometer = (SELECT TOP 1 EndOdometer FROM JobInfo 
               WHERE CarId = Car.CarId ORDER BY EndOdometer DESC) 
       WHERE EXISTS (SELECT TOP 1 EndOdometer FROM JobInfo 
                    WHERE CarId = Car.CarId ORDER BY EndOdometer DESC)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...