|
|
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой, есть следующая структура данных для хранения информации о заказах: Код: plsql 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. Есть данные: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Хочется странного - сделать копию заказа вот таким образом: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В теории можно добавить поле parent_id в теблицу site_order_item и в него заносить старые значения, но быть может можно обойтись без этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 16:48 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
chernomyrdin, А чего б не написать Код: sql 1. 2. 3. и так далее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 17:18 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
Вопрос в том, что мы получим после INSERT, как можно узнать какому старому значению id соответствует новое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 17:35 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
chernomyrdin, Так вы же вставляете o.id как site_order_item,order_id А вообще потом заджоинить никто не мешает, если что-то еще надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 17:39 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
Если разбить на части, получается вот что: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Дальше мы получить соответствие old_item.id => new_item.id, а вот как это сделать не понятно, можно влоб: Код: plsql 1. 2. 3. Но это не работает в некоторых случаях. Можно добавить колонку o_item_id в site_order_item и на этапе создании копии заполнять: Код: plsql 1. 2. 3. 4. 5. 6. 7. Но хотелось-бы обойтись без этой вспомогательной колонки, и все копирование выполнять одним запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 17:51 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
chernomyrdin, Попробуйте делать временную таблицу, туда вставлять данные для order_item (и там же держать старый item_id), делать что надо и потом ее дропать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 18:03 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
Author the new one, Про такой путь я так-же думал и возможно придется, если не найду другого выхода. Просто хотелось сделать подобную манипуляцию с минимумом телодвижений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 18:10 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
Иллюстрация про JOIN двух таблиц. Есть данные: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если сделать: Код: plsql 1. 2. 3. 4. 5. 6. Получаем не 4 строки а больше: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 18:13 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
chernomyrdin, ну так и сделайте, как я вам сразу и говорил Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 18:23 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
Ok, всем большое спасибо, вот что получилось: Код: plsql 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. Выражение работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 09:40 |
|
||
|
Вопрос по INSERT INTO ... SELECT ... RETURNING
|
|||
|---|---|---|---|
|
#18+
не проще ли Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 11:32 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=1997689]: |
0ms |
get settings: |
6ms |
get forum list: |
23ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 517ms |

| 0 / 0 |
