Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
Коллеги, добрый день. Подскажите, пожалуйста, как можно реализовать следующую задачу: TabA (id, Code, StartDate, FinishDate) TabB (id, price, PriceStartDate, PriceFinishDate) Обе таблицы завязаны по ID Т.е. tabA.id = tabB.id Есть третья таблица: TabC (code,startDate,FinishDate,price,PriceStartDate,PriceFinishDate) tabC.code = TabA.code Задача казалось бы простая (для более менее знающего SQL) Нужно обновить tabB.price на данные из tabC.price, при этом обновить сразу tabA.StartDate и tabA.FinishDate на tabC.StartDate и tabC.FinishDate соответственно. Знаю, что нужно реализовывать через цикл и курсор, но только сегодня начал их изучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2019, 15:00 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
Грустно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2019, 17:18 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
Максим Гг. Нужно обновить tabB.price на данные из tabC.price, при этом обновить сразу tabA.StartDate и tabA.FinishDate на tabC.StartDate и tabC.FinishDate соответственно. Знаю, что нужно реализовывать через цикл и курсор, но только сегодня начал их изучать. Нужен запрос UPDATE. Точнее, 2-а, так как в одном запросе можно обновить только одну таблицу Вот и делаешь 1 Код: sql 1. 2. 3. 2 Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2019, 17:28 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
... в одной транзакции притом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2019, 17:48 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
court, благодарю за ответ! Немного не дописал условие. Тк мы обновляем TabB.price, то тут необходимо сохранять историю. Т.е. в таблице TabB для каждой изменяемой цены добавляем новую строку с новой ценой и новой начальной датой, а у старой цены - дату окончания ставим TabB.PriceStartDate=-1 от новой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2019, 18:00 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
Максим Гг. court, благодарю за ответ! Немного не дописал условие. Тк мы обновляем TabB.price, то тут необходимо сохранять историю. Т.е. в таблице TabB для каждой изменяемой цены добавляем новую строку с новой ценой и новой начальной датой, а у старой цены - дату окончания ставим TabB.PriceStartDate=-1 от новой. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. нуу и в транзакцию завернуть всё, как уже сказали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2019, 18:26 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
court, спасибо большое! Вроде всё ОК. Если не сложно, расскажите, пожалуйста, о роли переменной @t в данном скрипте, а также использование inner join @t t on t.id = a.id Не совсем понимаю что это нам даёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2019, 13:07 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
Максим Гг., TabA (id, Code, StartDate, FinishDate) TabB (id, price, PriceStartDate, PriceFinishDate) Обе таблицы завязаны по ID Т.е. tabA.id = tabB.id Т.е. у тебя таблицы связаны 1 к 1 и если сделать TabAB (id, Code, StartDate, FinishDate, price, PriceStartDate, PriceFinishDate) то суть не поменяется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2019, 13:17 |
|
||
|
Update в цикле одной таблицы, данными из другой.
|
|||
|---|---|---|---|
|
#18+
crutchmaster, не совсем. В TabA есть id который в таблице TabB называется idItem. Они связаны. Также в TabB есть свой ID-шник, для TabA он роли не играет. Я прям детально не стал всё описывать, скрипт от уважаемого Court подправил. Но хотелось бы разобраться в деталях. Т.е. в TabB могут быть несколько цен с разными TabB.id, но при этом с одним TabB.idItem, по которому и идёт связка с TabA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2019, 13:23 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39895024&tid=1686886]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 355ms |

| 0 / 0 |
