2015-01-28 2 views
0

Я хочу отсортировать таблицу по адресу http://sqlfiddle.com/#!2/87fa6 по jobs.datetime по возрастанию, а затем выбрать только строки, где jobs.operator_id=0 и jobs.status=open.Сортировка таблицы MySQL, а затем обновление строк

Как только таблица имеет эту структуру, я хочу установить jobs.operator_id=bidList[i].OperatorId, но это должно происходить только в строках, где booking.plot_id=bid.plot_id.

Я купил его до следующих двух операторов SQL - можно ли их каким-то образом объединить, чтобы они соответствовали вышеуказанному требованию?

// Allocate jobs to bids 
for (var i = 0; i < bidList.Count; i++) 
{ 

    // Select rows where booking.status=open, booking.postcode=_plot and 
    // booking.operator_id=0. 
    // Once this is done, order by datetime 

    query = "SELECT operator_id, plot_id, status FROM booking " + 
      "WHERE status='open' AND postcode='" + _plot + "' AND operator_id=0" + 
      "ORDER BY datetime"; 

    // Whilst maintaining the structure above, set 
    // booking.operator_id=bidList[i].OperatorId, 
    // booking.status=allocated where BidList.PlotId = jobs.plotid 

    query += "UPDATE t1 SET t1.operator_id='" + 
      bidList[i].OperatorId + "', t1.status='Allocated' " + 
      "FROM booking_view T1 "+ "JOIN bid t2 ON t1.plot_id=t2.plot_id"; 
}   

ответ

1

Измените второй запрос, как это:

"UPDATE t1 SET t1.operator_id='" + 
bidList[i].OperatorId + "', t1.status='Allocated' " + 
"FROM booking_view T1 "+ 
"JOIN bid t2 ON t1.plot_id=t2.plot_id"; 
+0

Спасибо, это будет только запустить обновление только на строки, которые отвечают требованиям по первой части запроса? – methuselah

+0

Btw Я только что понял, это 'booking' вместо' booking_view'. – methuselah

+0

ну, я просто исправлю запрос, не пытаюсь изменить логику обновления, поэтому, пожалуйста, скажите мне окончательные критерии для обновления, я вижу слишком много запутанной информации. –

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