Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выборка из двух таблиц с идентичной структурой (не обьединение)


VictorT ©   (2004-12-26 20:29:00) 

не могу придумамать, как сделать одним запросом и без дополнитьельной таблицы (да и не знаю, возможно ли это).
нужно что-то типа такого (но без дополнительной таблицы):

delete from temp_table
insert into temp_table select * table1 where id > 1000 and id < 2000
insert into temp_table select * table2 where id > 1000 and id < 2000
select * from temp_table order by id


* одинаковых значений id в таблицах table1 и table2 нету.
** СУБД - MySQL


VictorT   (2004-12-29 13:05:00) [1]

О, я уже и забыл про эту тему. Сделал так, как описал в самом первом посте. Может можно было и лучше.

А речь шла о форуме. Одна таблица основная - другая архив (в неё переносятся старые сообщения), и в ахивные темы писать нельзя.


Vemer   (2004-12-27 11:22:00) [2]

To YurikGL:
Даже если так, то сумма строк в 2-х таблицах будет равна кол-ву строк в общей. А удобство обработки повышается. И сносить/очищать 1 таблицу проще чем 2.


YurikGL   (2004-12-27 10:43:00) [3]


> Vemer ©   (26.12.04 23:58) [7]

подозреваю, что речь идет о чем-то вроде статистики например, посещаемости сайта и количество записей очень-очень большое. В этом случае каждый месяц создается новая таблица в которую начинают записываться данные.


Fay   (2004-12-27 04:14:00) [4]

Vemer ©   (26.12.04 23:58) [7]
>> Небольшая денормализация никого еще не
М.б. "нормализация"?


Vemer   (2004-12-26 23:58:00) [5]

Не верю :)..

Похоже тут больше вопрос проектирования структуры..

Если надо сохранять "различия" между значениями бывших 1-ой и 2-ой таблицы, можно дополнительное поле T_Numberввести в общей таблице, и скопировать в нее первую (T_Number = 1)и вторую (T_Number = 2) и дальше делать с данными, все что надо..

Если в 1-ой и 2-ой таблице есть несовпадающие поля - запихать их в единую всех. Небольшая денормализация никого еще не убила..


VictorT   (2004-12-26 21:18:00) [6]


> Если нет повторяющихся значений - не проще объединить
> таблицы?

В смысле, вместо двух использовать одну? К сожалению, это не подходит.


Vemer   (2004-12-26 21:15:00) [7]

Если нет повторяющихся значений - не проще объединить таблицы?


VictorT   (2004-12-26 21:07:00) [8]

всё это хорошо, только вот...
Оператор UNION реализован в MySQL 4.0.0.
а на хостинге MySQL 3.23.49
Переставить, соответственно, возможности не имею.


sniknik   (2004-12-26 20:50:00) [9]

хотя чего это я, сортировка как раз нужна, а дублей нет... ;( невнимателен, вот так полный аналог должен быть

select * table1 where id between 1001 and 1999
union all
select * table2 where id between 1001 and 1999
order by id
(union all всетаки предпочтительнее чтобы два разе не сортировало)


sniknik   (2004-12-26 20:47:00) [10]

по моему тоже без вложенного, и union all а не то дубли поубирает и отсортирует на попытке (не подойдет под аналог в коде вопроса)

select * table1 where id between 1001 and 1999
union all
select * table2 where id between 1001 and 1999


aus   (2004-12-26 20:39:00) [11]

select * from
(select * from table1
union
select * from table2) t
where id between 1002 and 1999
order by id

Возможно для MySQL без вложенного запроса, не уверен.


Наверх

Титульная страница Поиск, карта сайта Написать письмо