Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.034 c
3-1104138893
Russko
2004-12-27 12:14
2005.01.30
Ошибка: "Данные редактируются другим пользователем"


1-1106124097
Denmin
2005-01-19 11:41
2005.01.30
Нужна финкция поиска и определения позиции пробела в предложении.


3-1104158542
Михаил2209
2004-12-27 17:42
2005.01.30
Вопрос Query выполняет запрос и показывает результат в DBGrid...


14-1105436087
WondeRu
2005-01-11 12:34
2005.01.30
Я Госы на 5 сдал!!!


3-1103788002
Scorpio
2004-12-23 10:46
2005.01.30
Аналог команды Like из SQL для использования в таблице.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский