![]() |
|
Модераторы: skyboy |
![]()
|
|
| Dann2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 складывает каждое значение из первой таблицы со всем столбцом второй, получается совсем не то что надо! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
однако, преполагается, что у тебя в каждой таблице имеется primary key(в случае с моим запросом, я предполагаю, что поле id - это и есть primary key, по значению которого связываются таблицы). если primary key у тебя нет, то задача лишена смысла: потому что даже человек не сможет сказать, какое значение с каким сравнивать: почему, к примеру, складывать "5+3", а не "5+8"? |
|||
|
||||
| Dann2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
в БД нет такого механизма как номер строки.
строго говоря, при запорсе без указания поля для сортировки, СУБД имеет полное "право" каждый раз выдавать данные в другом порядке. и связать таблицы по несуществующему номеру строки не получится никак. создай допполе типа int auto_increment. в каждой таблице. вот и будет тебе "номер строки". а потом воспользуешься запросом, что я тебе дал. Добавлено через 5 минут и 29 секунд если в третьей таблице пусто, то запрос будет не update, а insert.
кроме того, можно учесть, что в одной таблице записей будет не столько же, сколько во второй. заменив inner на left. |
|||
|
||||
| Dann2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Спасибо за разъяснения, skyboy!
Тема закрыта |
|||
|
||||
| GreyTomcat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 5.11.2012 Репутация: нет Всего: нет |
Вопрос аналогичен, только с некотороыми уточнениями
Есть в базе Members две таблице Users1 и Users2 обе имеют первичный ключ ID и поле Th Требуются прибавить, значение поля Th из таблицы Users1 к соответствующим значениям поля Th в таблице Users2 и записать это в поле Th таблицы Users2 Это сообщение отредактировал(а) GreyTomcat - 5.11.2012, 11:33 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |