powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как заполнить одну таблицу данными из второй таблицы
25 сообщений из 28, страница 1 из 2
Как заполнить одну таблицу данными из второй таблицы
    #39529759
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. помогите плиз не могу никак решить как составить запрос.
есть 2 таблицы
1 таблица id1,name1,massa1 (range)
2 таблица id2,kodid2,name2,massa2 (box)
таблицы сопоставимы по полям id1-kodid2.

Нужно в первую таблицу в massa1 занести сумму столбца massa2, сгруппированному по kodid2
Как сгруппировать разобрался:
select KODID2,sum(MASSA2) from BOX group by KODID2 , а вот заполнить первую не получается.
Есть еще одно условие INSERT не подходит , т.к ID1 и NAME1 не меняется , а у них надо менять тока massa1.

пробовал
update range , (select sum(massa2) as massa from box group by kodid2) tt set range.massa1=tt.massa where range.id=tt.kodid2;

выдает ошибку Invalid token.Dynamic SQL Error.SQL error code = -104.Token unknown - line 1, column 14. Ругается на запятую после "," после range. Возможно FIREBIRD так не может.

update range set massa1=(select sum(massa2) from box as BB group by kodid2) where (range.id1=BB.kodid2)

Кричит что нет поля BB.kodid2
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529761
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне вот тут помогли. Но софт другой

20760304
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529763
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руководство по sql в fb читать не пробовали:
Код: sql
1.
2.
3.
INSERT INTO cars
SELECT * 
FROM new_cars



А пример с фокса крайне неудачный
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529764
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И расскажите зачем group by в расчете суммы
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529773
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochi,

оператор MERGE тебе поможет
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529803
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисRomansochi,

оператор MERGE тебе поможет
Смотря, какой у него Огнептиц - MERGE поддерживается только с 2.5, если мне память не изменяет
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529820
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GallemarРуководство по sql в fb читать не пробовали:
Код: sql
1.
2.
3.
INSERT INTO cars
SELECT * 
FROM new_cars



А пример с фокса крайне неудачный

Я вроде ж написал что insert не подходит... мне не надо вставлять новые записи мне надо исправить существуещее , в sql подобного примера не нашел поэто му и спросил. Точнее если не использовать group by , то проблем нет а вот с group by.....
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529824
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_n,

изменяет. MERGE появился в 2.1. Если нету MERGE можно воспользоваться EXECUTE BLOCK начиная с 2.0
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529825
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochi
Я вроде ж написал что insert не подходит... мне не надо вставлять новые записи мне надо исправить существуещее , в sql подобного примера не нашел поэто му и спросил. Точнее если не использовать group by , то проблем нет а вот с group by.....
Ты много чего написал. Range в Firebird нет.
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529827
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

range это таблица
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529832
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemar,

range это таблица
Точно. Мне вообще весь код непонятен. Особенно
Код: sql
1.
select sum(massa2) as massa from box group by kodid2

.
Как будто знакомые слова ищутся гуглом и подставляются.
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529837
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GallemarИ расскажите зачем group by в расчете суммы
мне нужна сумма не по всему столбцу а по строкам которые относятся к одному тип

болтики в разных коробка - общая сумма
шурупы в разных коробках - общаяя сумма
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529840
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochi,

ага, то есть сумма тебе нужна, а к чему эта сумма относится нет? Странно
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529844
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GallemarСимонов ДенисGallemar,

range это таблица
Точно. Мне вообще весь код непонятен. Особенно
Код: sql
1.
select sum(massa2) as massa from box group by kodid2

.
Как будто знакомые слова ищутся гуглом и подставляются.

странно вроде понятно таблица box считается кол-во по группам и заносится в вычисляемое поле massa

1 10
1 0
1 0
2 20
2 20
3 10
3 20
3 30

выводит

1 10
2 40
3 60
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529845
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex_p_nСимонов ДенисRomansochi,

оператор MERGE тебе поможет
Смотря, какой у него Огнептиц - MERGE поддерживается только с 2.5, если мне память не изменяет
у меня 2.5 версия
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529846
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochiвыводит

1 10
2 40
3 60

врёшь. Нет у тебя в select столбца kodid2
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529847
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochiupdate range set massa1=(select sum(massa2) from box as BB group by kodid2) where (range.id1=BB.kodid2)


Код: sql
1.
2.
update range r
  set r.massa1=(select sum(b.massa2) from box b  where B.kodid2 = r.id1)



Ну наверное как-то вот так
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529854
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисRomansochi,

оператор MERGE тебе поможет

с мерге чтото не получается ... group by мешает
а в цикле не хочу делать записей когда много будет тормозить
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529855
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochi,

показывай как делал
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529858
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисRomansochiвыводит

1 10
2 40
3 60

врёшь. Нет у тебя в select столбца kodid2

нету , я просто пронумеровал

select kodid2,sum(massa2) as massa from box group by kodid2

Вот так будет то что я написал , но в update нужны тока расчеты по massa2 поэтому в запросе update небыло поля kodid2
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529865
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисRomansochi,

ага, то есть сумма тебе нужна, а к чему эта сумма относится нет? Странно

сорри трудно обьяснить для себя четко вижу... болтики нужно кол-во во всех разных коробках
, шурупы , нужно кол-во во всех разных коробках.

допустим доложил болтиков соответственно общее кол-во болтиков должно измениться...

для одной записи конечно можно было изменять сразу же когда изменяется и кол-во в болтиках так у меня щас работает .. но мне надо чтоб я нажал кнопку и в первой таблице общее колво изменилось по всем наименованием ...
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529870
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romansochi,

беда... Не ужели так сложно посмотреть пример оператор merge?

Код: sql
1.
2.
3.
4.
5.
merge into range r
using (select select sum(massa2) as massa, kodid2 from box group by kodid2) b
on b.kodid2 = r.id1
when matched then
  update set massa1 = b.massa
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39529874
Romansochi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7mRomansochiupdate range set massa1=(select sum(massa2) from box as BB group by kodid2) where (range.id1=BB.kodid2)


Код: sql
1.
2.
update range r
  set r.massa1=(select sum(b.massa2) from box b  where B.kodid2 = r.id1)





Ну наверное как-то вот так
о спасибо вроде работает ... чтото я не подумал что группирование и так будет если связать 2 таблицы
щас буду проверять
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39530176
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисRomansochi,

оператор MERGE тебе поможет

Мдя. В предыдущей жизни я бы, конечно, прошёлся насчёт проктологии. Сейчас просто скажу, как Айболит Бармалею в пещере - обилие возможностей тебя погубит.
...
Рейтинг: 0 / 0
Как заполнить одну таблицу данными из второй таблицы
    #39530178
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mRomansochiupdate range set massa1=(select sum(massa2) from box as BB group by kodid2) where (range.id1=BB.kodid2)


Код: sql
1.
2.
update range r
  set r.massa1=(select sum(b.massa2) from box b  where B.kodid2 = r.id1)



Ну наверное как-то вот так

Я бы ещё к селекту коалеску привинтил. Из агрегатов null при отсутствии данных не возвращает только count.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как заполнить одну таблицу данными из второй таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]