Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Внизвыборка из двух таблиц с идентичной структурой (не обьединение) Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c