Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

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

 
VictorT ©   (2004-12-26 20:29) [0]

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

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


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

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

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


 
sniknik ©   (2004-12-26 20:47) [2]

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

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


 
sniknik ©   (2004-12-26 20:50) [3]

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

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


 
VictorT ©   (2004-12-26 21:07) [4]

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


 
Vemer ©   (2004-12-26 21:15) [5]

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


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


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

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


 
Vemer ©   (2004-12-26 23:58) [7]

Не верю :)..

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

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

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


 
Fay ©   (2004-12-27 04:14) [8]

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


 
YurikGL ©   (2004-12-27 10:43) [9]


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

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


 
Vemer ©   (2004-12-27 11:22) [10]

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


 
VictorT ©   (2004-12-29 13:05) [11]

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
1-1106179977
_Дельфин_
2005-01-20 03:12
2005.01.30
String и Char


1-1105708010
про
2005-01-14 16:06
2005.01.30
Kak svernut programku pri pervom ejo zapuske???


14-1105438926
NewDelpher
2005-01-11 13:22
2005.01.30
генератор 3D-моделей людей


1-1105983045
Dimon 33321
2005-01-17 20:30
2005.01.30
Послать сообщение Paint форме


9-1097069654
.cpp
2004-10-06 17:34
2005.01.30
Создание анимации для управляемого спрайта