объединить MySQL вставку с независимым оператором WHERE

0

У меня есть простая инструкция INSERT, которая собирает данные из простой html-формы и другой таблицы mysql и вставляет все данные во вторую таблицу mysql.

mysqli_query($GLOBALS["conn"], 
    "INSERT INTO 'Table2' 
    (idFI, NameSZ, ColorSZ, TimeSZ, RoomSZ, DateSZ) 
    SELECT id, FName, ColorFI, '$Time', '$Room', '$Date' 
    FROM Table1 
    WHERE id = '$FNameid'")

Пока это прекрасно.

Теперь я хочу добавить инструкцию, которая вставляет значение (1, 2 или 3) в таблицу 2 (RowSZ) в зависимости от времени, которое было вставлено в поле ввода для TimeSZ.

Правила:

  • ниже 8:00:00 → Значение 1
  • между 8:15:00 и 16:00:00 → Значение 2
  • выше 16:15:00 → Значение 3

Пример:

Я ввожу время 12:00:00 в поле ввода (TimeSZ). Когда я нажимаю кнопку "Отправить", я хочу вместе с остальной частью инструкции INSERT INTO записать значение 2 в строку (RowSZ)

+------+--------+---------+----------+--------+------------+-------+
| idFi | NameSZ | ColorSZ | TimeSZ   | RoomSZ | DateSZ     | RowSZ |
+------+--------+---------+----------+--------+------------+-------+
| 33   | Namexx | #FFFFFF | 12:00:00 | 2      | 2018-06-30 | 2     |

Значение 2 в RowSZ должно быть вставлено автоматически в зависимости от TimeSZ, который был введен в поле ввода формы.

Как мне это сделать? Спасибо!

  • 0
    Мне не понятно, о чем ты спрашиваешь. У вас есть рабочий оператор INSERT , и вы спрашиваете, как написать еще один оператор INSERT ? Вы пытались написать еще один? Что не сработало?
  • 0
    Я могу написать еще одно заявление INSERT, да. Но мне нужны все значения в одной строке строки в таблице MySQL.
Показать ещё 7 комментариев
Теги:
insert

1 ответ

0
Лучший ответ

Это можно сделать в инструкции SQL Insert. В вашей вкладке вы можете вычислить значение для RowSZ на основе значения времени:

INSERT INTO 'Table2' 
    (idFI, NameSZ, ColorSZ, TimeSZ, RoomSZ, DateSZ, RowSZ) 
    SELECT id, FName, ColorFI, '$Time', '$Room', '$Date', IF('$time' < '08:00:00',1,if('$time' < '15:00:00',2,3))
    FROM Table1 
    WHERE id = '$FNameid'
  • 0
    Я искал что-то подобное, но, к сожалению, ваше решение не работает. Он всегда вставляет значение 3.
  • 0
    Возможно, вам придется преобразовать значение $ time в значение даты-времени или метки времени для сравнения. Я подозреваю, что сравнения могут не работать в зависимости от форматирования значения $ time.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню