Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создать копии записей в many-to-many с новым id - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Создать копии записей в many-to-many с новым id
user0 Дата: Вторник, 16.01.2018, 15:41 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Всем привет,

Подскажите, пожалуйста, как продублировать записи где idA=7 с заменой idA на 9 в many-to-many таблице такого вида:
[vba]
Код
idA  idB  idC
1    9    1
1         3
4    2    1
7    1    1
7    1    2
[/vba]idC в idA не повторяются

В результате должно получиться
[vba]
Код
idA  idB  idC
1    9    1
1         3
4    2    1
7    1    1
7    1    2
9    1    1
9    1    2
[/vba]
К сообщению приложен файл: m2m.zip (17.2 Kb)


Сообщение отредактировал user0 - Вторник, 16.01.2018, 15:49
 
Ответить
СообщениеВсем привет,

Подскажите, пожалуйста, как продублировать записи где idA=7 с заменой idA на 9 в many-to-many таблице такого вида:
[vba]
Код
idA  idB  idC
1    9    1
1         3
4    2    1
7    1    1
7    1    2
[/vba]idC в idA не повторяются

В результате должно получиться
[vba]
Код
idA  idB  idC
1    9    1
1         3
4    2    1
7    1    1
7    1    2
9    1    1
9    1    2
[/vba]

Автор - user0
Дата добавления - 16.01.2018 в 15:41
SLAVICK Дата: Вторник, 16.01.2018, 16:35 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
как продублировать записи где idA=7 с заменой idA на 9

Наверно так:
[vba]
Код
SELECT * FROM m2m
union
SELECT 9 as idA, m2m.idB, m2m.idC FROM m2m
WHERE (m2m.idA=7)
[/vba]
К сообщению приложен файл: m2m1.rar (16.2 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
как продублировать записи где idA=7 с заменой idA на 9

Наверно так:
[vba]
Код
SELECT * FROM m2m
union
SELECT 9 as idA, m2m.idB, m2m.idC FROM m2m
WHERE (m2m.idA=7)
[/vba]

Автор - SLAVICK
Дата добавления - 16.01.2018 в 16:35
user0 Дата: Вторник, 16.01.2018, 16:52 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Да, так дополняет запрос новыми данными, но мне бы еще как-то именно записать в таблицу m2m эти новые данные? :)

Подозреваю, что я пока слегка криво это делаю
[vba]
Код
Dim rs1 As Recordset, rs2 As Recordset
    Set rs1 = CurrentDb.OpenRecordset("SELECT * FROM m2m WHERE idA=7", dbOpenDynaset, dbSeeChanges)
    Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM m2m", dbOpenDynaset, dbSeeChanges)
    Do Until rs1.EOF
        rs2.AddNew
        rs2!idA = 9
        rs2!idB = rs1!idB
        rs2!idC = rs1!idC
        rs2.Update
        rs1.MoveNext
    Loop
[/vba]


Сообщение отредактировал user0 - Вторник, 16.01.2018, 17:18
 
Ответить
СообщениеДа, так дополняет запрос новыми данными, но мне бы еще как-то именно записать в таблицу m2m эти новые данные? :)

Подозреваю, что я пока слегка криво это делаю
[vba]
Код
Dim rs1 As Recordset, rs2 As Recordset
    Set rs1 = CurrentDb.OpenRecordset("SELECT * FROM m2m WHERE idA=7", dbOpenDynaset, dbSeeChanges)
    Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM m2m", dbOpenDynaset, dbSeeChanges)
    Do Until rs1.EOF
        rs2.AddNew
        rs2!idA = 9
        rs2!idB = rs1!idB
        rs2!idC = rs1!idC
        rs2.Update
        rs1.MoveNext
    Loop
[/vba]

Автор - user0
Дата добавления - 16.01.2018 в 16:52
SLAVICK Дата: Вторник, 16.01.2018, 17:37 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Можно создать m3m
[vba]
Код
SELECT idA, idB, idC INTO m3m
FROM (SELECT * FROM m2m
UNION SELECT 9 as idA, m2m.idB, m2m.idC FROM m2m
WHERE (m2m.idA=7));
[/vba]
а потом удалить m2m и переименовать m3m в m2m


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеМожно создать m3m
[vba]
Код
SELECT idA, idB, idC INTO m3m
FROM (SELECT * FROM m2m
UNION SELECT 9 as idA, m2m.idB, m2m.idC FROM m2m
WHERE (m2m.idA=7));
[/vba]
а потом удалить m2m и переименовать m3m в m2m

Автор - SLAVICK
Дата добавления - 16.01.2018 в 17:37
user0 Дата: Вторник, 16.01.2018, 17:58 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Любопытный подход, но меня смущает что база разделена и с бэкэндом работает несколько пользователей.
Такие записи происходят раз в минут 10 в 3 небольшие таблицы штуки по 5к записей в 3х полях, но аксес же любит раздувать базы на ровном месте.
 
Ответить
СообщениеЛюбопытный подход, но меня смущает что база разделена и с бэкэндом работает несколько пользователей.
Такие записи происходят раз в минут 10 в 3 небольшие таблицы штуки по 5к записей в 3х полях, но аксес же любит раздувать базы на ровном месте.

Автор - user0
Дата добавления - 16.01.2018 в 17:58
SLAVICK Дата: Вторник, 16.01.2018, 18:19 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
ну дык можно не удалять таблицу 2, а перезаписать в ней данные. (1-й архив)
с Аксессом не особо работаю а в SQL я именно так и делал бы:
Создать темповую таблицу с нужными данными
Перезаписать данные в 1-й таблице.
По Вашему примеру можно и одним запросом просто добавить данные:
[vba]
Код
INSERT INTO m2m
SELECT *
FROM (SELECT 9 AS idA, m2m.idB, m2m.idC FROM m2m WHERE (m2m.idA=7))  AS [%$##@_Alias];
[/vba]
см. 2-й архив
К сообщению приложен файл: m2m2.rar (19.3 Kb) · m2m3.rar (21.6 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениену дык можно не удалять таблицу 2, а перезаписать в ней данные. (1-й архив)
с Аксессом не особо работаю а в SQL я именно так и делал бы:
Создать темповую таблицу с нужными данными
Перезаписать данные в 1-й таблице.
По Вашему примеру можно и одним запросом просто добавить данные:
[vba]
Код
INSERT INTO m2m
SELECT *
FROM (SELECT 9 AS idA, m2m.idB, m2m.idC FROM m2m WHERE (m2m.idA=7))  AS [%$##@_Alias];
[/vba]
см. 2-й архив

Автор - SLAVICK
Дата добавления - 16.01.2018 в 18:19
user0 Дата: Вторник, 16.01.2018, 18:41 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Да, спасибо большое, то что нужно!
 
Ответить
СообщениеДа, спасибо большое, то что нужно!

Автор - user0
Дата добавления - 16.01.2018 в 18:41
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!