|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Доброго времени суток! Помогите разрешить пролемку пожалуйста. Есть база с 2-мя таблицами: В 1-й ( strings ) поле name (текстовый идентификатор не уникален) и body (текст - переведенное с английского наименование) В 2-й ( items ) поле desc (текстовый идентификатор не уникален) rus (будущий текст из поля body таблицы 1) и несколько других полей.... Задача перенести из strings.body в items.rus данные в соответствии с полем items.name = strings.name . Пробовал так: Код: plaintext 1. 2. 3.
Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2010, 18:46 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Fireword, 1) если у вас в strings нет уникального идентификатора, то как вы вообще собираетесь переносить данные?... т.е. для 'str1' может быть два значения 'green', 'red' Какое из значений должно оказаться в items ? 2) пишете про items.name = strings.name , а в запросе указываете i."desc" = s.name ... Обновить данные можно, если есть уникальный идентификатор Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2010, 19:36 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Tolka , спасибо большое за помощь, сейчас буду проверять. По поводу уникальности скажу что ошибся вернее копипаст - зло, в таблице strings значения name конечно же уникальны, но опомнился после того как создал тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2010, 19:46 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Доброго дня! Опять возникла проблемма, не работает запрос Код: plaintext 1. 2.
По сути таблица export имеет 3 поля (id (primary), name, detail) - периодически обновляемая, из ее и происходит загрузка некоторых строк в таблицу items , сама же items имеет большое количество полей (id -primary) но связь с другими только по полю name . Ума не приложу, после выполнения запроса во всех строках поля items.name значение первой записи export.detail Пробовал join-oм: Код: plaintext 1. 2.
Но результат тот - же. Не пойму в чем дело, ведь свою первую проблемму в первом посте поборол именно таким запросом. Подскажите пожалуйста где проблемма. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 18:20 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
нет в sqlite возможности проводить апдейт подзапросами. sqliteThe modifications made to each row affected by an UPDATE statement are determined by the list of assignments following the SET keyword. Each assignment specifies a column name to the left of the equals sign and a scalar expression to the right Ваш подзарос поле name рассматривает как поле в таблице export . При этом он выбирает первую строку и присваивает её значение всем строкам в таблице items ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:24 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Tolka , в очередной раз большое спасибо, опять выручили)) Как я мог про это забыть, переименовал поле и все пошло как надо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:33 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
всмысле Код: plaintext 1. 2.
сработало??? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 19:39 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Да только имя поля менял в таблице export как то так)), еще раз спасибо Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2010, 20:05 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Тема старая, но может кому пригодится... "CREATE TABLE IF NOT EXISTS TBL1 (Col1 UNIQUE, Col2);" "CREATE TABLE IF NOT EXISTS TBL2 (Col1 UNIQUE, Col2);" 'BEGIN;') "INSERT INTO TBL1 VALUES ('1', 'a');" "INSERT INTO TBL1 VALUES ('2', 'b');" "INSERT INTO TBL1 VALUES ('3', 'c');" "INSERT INTO TBL1 VALUES ('4', 'd');" "INSERT INTO TBL1 VALUES ('6', 'f');" "INSERT INTO TBL1 VALUES ('11', 't');" "INSERT INTO TBL1 VALUES ('7', 'h');" "INSERT INTO TBL2 VALUES ('1', '');" "INSERT INTO TBL2 VALUES ('2', '');" "INSERT INTO TBL2 VALUES ('3', '');" "INSERT INTO TBL2 VALUES ('4', '');" "INSERT INTO TBL2 VALUES ('6', '');" "INSERT INTO TBL2 VALUES ('7', '');" "INSERT INTO TBL2 VALUES ('11', '');" 'COMMIT;') Данный запрос отрабатывает как нужно "UPDATE TBL2 SET Col2 = (SELECT TBL1.Col2 FROM TBL1 WHERE TBL2.Col1=TBL1.Col1) ;" А этот выставляет всем строкам одинаковое значение "UPDATE TBL2 SET Col2 = (SELECT TBL1.Col2 FROM TBL1, TBL2 WHERE TBL2.Col1=TBL1.Col1) ;" Это я получил методом научного тыка после прочтения данного поста. Интересно было бы узнать логику, если кто-то сможет схематично объяснить, было бы хорошо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2015, 12:01 |
|
SQLIte и UPDATE SET из 2-х таблиц
|
|||
---|---|---|---|
#18+
Всё ж ясно как белый день. В первом случае, подзапрос связан с внешним запросом: Код: plaintext 1. 2. 3. 4. 5.
Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 12:15 |
|
|
start [/forum/topic.php?fid=54&msg=36926515&tid=2008659]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 291ms |
total: | 434ms |
0 / 0 |