Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложение столбцов из двух таблиц и запись в третью 
V
    Опции темы
Dann2
Дата 17.4.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Помогите пожалуйста никак не могу разобраться как составить запрос

есть две таблицы заполненые t0 и t1 и пустая t2

t0        t1
---      ----
5          3
2          6
8          2
3          8
7          2

Нужно сложить значения столбца первой таблицы с значениями столбца второй, одним запросом SELECT, и записать в третью таблицу. 
что б получилось:

t2
----
8
8
10
11
9

пробовал 
SELECT t0.id + t1.id FROM t0, t1;

но так mysql складывает каждое значение из первой таблицы со всем столбцом второй, получается совсем не то что надо!



PM MAIL   Вверх
skyboy
Дата 17.4.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Код

UPDATE t0 INNER JOIN t1 ON t0.id = t1.id INNER JOIN t2 ON t2.id = t0.id SET t2.value = t0.value + t1.value

однако, преполагается, что у тебя в каждой таблице имеется primary key(в случае с моим запросом, я предполагаю, что поле id - это и есть primary key, по значению которого связываются таблицы).
если primary key у тебя нет, то задача лишена смысла: потому что даже человек не сможет сказать, какое значение с каким сравнивать: почему, к примеру, складывать "5+3", а не "5+8"?
PM MAIL   Вверх
Dann2
Дата 17.4.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Спасибо, skyboy
нет, мне не нужно ни с чем сравнивать и сортировать. просто построчно сложить значения столбцов таблиц.
складывать нужно "5+3", а не "5+8" по таму что эти числа  "5+3", в одной строке таблиц t0 и t1 а "5+8" в разных.

может не понятно объяснил. попробую попроще написать


в каждой таблице есть только один столбец id INT  (просто целые числа)

нужно взять число из первой строки столбца t0.id  сложить с числом из первой строки столбца t0.id и записать так же в первую 
строку t2.id;  тоже самое для вторых строк дальше для третей и так то конца таблиц. 
все таблицы имеют одинаковое колво строк.

т.е. нужно сделать примерно следующее:

t0.id      t1.id        t2.id
---         ----         ------
5    +     3      ->   8
2    +     6      ->   8
8    +     2      ->   10
3    +     8      ->   11
7    +     2      ->   9
PM MAIL   Вверх
skyboy
Дата 17.4.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



в БД нет такого механизма как номер строки.
строго говоря, при запорсе без указания поля для сортировки, СУБД имеет полное "право" каждый раз выдавать данные в другом порядке.
и связать таблицы по несуществующему номеру строки не получится никак.
создай допполе типа int auto_increment. в каждой таблице.
вот и будет тебе "номер строки". а потом воспользуешься запросом, что я тебе дал.

Добавлено через 5 минут и 29 секунд
если в третьей таблице пусто, то запрос будет не update, а  insert.
Код

insert into t2(value) select t0.value + t1.value from t0 inner join t1 on t1.id = t0.id

кроме того, можно учесть, что в одной таблице записей будет не столько же, сколько во второй. заменив inner на left.
PM MAIL   Вверх
Dann2
Дата 18.4.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Спасибо за разъяснения, skyboy!

Тема закрыта
PM MAIL   Вверх
GreyTomcat
Дата 5.11.2012, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.11.2012

Репутация: нет
Всего: нет



Вопрос аналогичен, только с некотороыми уточнениями
Есть в базе Members две таблице Users1   и Users2  обе имеют первичный ключ ID  и поле Th
Требуются прибавить, значение поля Th из таблицы Users1 к соответствующим значениям поля Th в таблице Users2 и записать это в поле Th таблицы Users2

Это сообщение отредактировал(а) GreyTomcat - 5.11.2012, 11:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.