Как синхронизировать ячейки в таблице mysql
Есть таблица: my_table которая выводится DESC
| id | depart | arrive | type | status |
- - - - - - - - - - - - - - - - - - - -
| 9 | 40 | 50 | bus | active |
| 8 | 130 | 140 | car | active |
| 7 | 120 | 130 | car | active |
| 6 | 110 | 120 | car | delete |
| 4 | 30 | 40 | bus | active |
| 3 | 20 | 30 | bus | delete |
| 2 | 10 | 20 | bus | active |
| 1 | 100 | 110 | car | active |
Форма для обновления данных arrive в таблице:
<form action='#' method='post'>
<input type='hidden' name='id' value='<?$row["id"])?>'>
<input type='text' name='arrive' value='<?$row["arrive"]?>'>
<button type='submit' name='update'>Update</button>
</form>
И обработчик формы:
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['update'])) {
$id = $_POST['id'];
$arrive = $_POST['arrive'];
$sql = "UPDATE my_table SET arrive = '$arrive' WHERE id = $id";
if ($conn->query($sql) === TRUE) {
echo "Запись успешно обновлена";
} else {
echo "Ошибка при обновлении записи: " . $conn->error;
}
}
Помогите усовершенствовать запрос $sql, чтобы при обновлении значения в arrive с id=1 автоматически обновлялось значение в depart со следующим id при условии что type=car, а status=active (в данном примере это будет depart с id=7) и соответственно, в ячейках после обновления выводилось одинаковое значение.
Ответы (1 шт):
Автор решения: Solt
→ Ссылка
UPDATE table t1
LEFT JOIN table t2 ON t2.id = (SELECT MIN(id) FROM table t3 WHERE t3.id>t1.id AND t3.type = t1.type AND t3.status = 'active')
SET t1.arrive = '$arrive', t2.depart = '$arrive'
WHERE t1.id=$id