Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из 2 похожих таблиц, с сортировкой, с limit и т.д. 
:(
    Опции темы
dimes
Дата 9.11.2004, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: 1
Всего: 14



Есть 2 таблици tab_1 и tab_2 они практически индентичны т.е. имеются много схожих полей(по имени, по типу и по смысловой нагрузки)

например
tab_1 содержит:
date sum
2004-11-01 2
2004-11-03 3
2004-11-04 6

tab_2 содержит:
date sum
2004-11-02 1
2004-11-04 4
2004-11-05 3

как видно значения могут отсутствовать как в первой таблице так и во второй

нужен запрос чтобы получить:
2004-11-01 2
2004-11-02 1
2004-11-03 7
2004-11-04 10
2004-11-05 3

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

и еще версия mySQL 3.23

Это сообщение отредактировал(а) dimes - 9.11.2004, 19:00
PM ICQ   Вверх
Ignat
Дата 9.11.2004, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Если я тебя правильно понял, вот так:
Код

SELECT `date`,`sum` FROM `table1`WHERE 1
UNION
SELECT `date`,`sum` FROM `table2`WHERE 1 ORDER BY `date`;


PS: Предикаты и сортировку ставь свои.
PPS: Имена полей и их порядок в первом и втором селекте должны быть идентичны (либо NULL).

Это сообщение отредактировал(а) Ignat - 9.11.2004, 19:00


--------------------
Теперь при чем :P
PM   Вверх
dimes
Дата 9.11.2004, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: 1
Всего: 14



Ignat
спасибо
только я забыл версию написать, извините

Цитата
Оператор UNION реализован в MySQL 4.0.0.

к сожелению smile
PM ICQ   Вверх
Ignat
Дата 9.11.2004, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Тогда сделай два селекта, а массивы слей вместе в клиенте.


--------------------
Теперь при чем :P
PM   Вверх
Akina
Дата 9.11.2004, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



dimes
Тогда может сделать одну таблицу вместо двух? добавить поле "опознания", если опознать по остальным полям невозможно...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
dimes
Дата 9.11.2004, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: 1
Всего: 14



спасибо, этого я и боялся...
похоже придется остановится на варианте со временной таблицей
Добавлено @ 19:33
Цитата(Akina @ 9.11.2004, 20:21)
Тогда может сделать одну таблицу вместо двух

к сожелению нельзя

Цитата(Akina @ 9.11.2004, 20:21)
добавить поле "опознания", если опознать по остальным полям невозможно...

а поподробнее можно?
PM ICQ   Вверх
Akina
Дата 9.11.2004, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



dimes
Можно и поподробнее...

Скажем есть 2 таблицы. Имена полей не важны, потому именуем по подобию:

Table1:
Field1
Field2
Field3


Table2:
Field1
Field4
Field5

Т.е. есть поле Field1, которое смысловО одинаково для обоих таблиц (может в макетах обозвано по-разному, но это мелочи), и есть поля Field2-5, причем поля 2 и 4 одного типа (скажем длинное целое), а 3 и 5 - разных и уникальных (скажем string и double).

Возможны объединения:

1)
Table12
Field1
Field2
Field3
Field4
Field5

Принадлежность к таблице четко определяется пустотой значений полей.

2)
Table12
Field1
Field24
Field3
Field5

Принадлежность к таблице и контент Field24 четко определяется пустотой значений полей 3 или 5.

Если же все поля смысловО соответственны или хотя бы типовО соответственны (т.е. 3 и 5 тоже одного типа), то возможно объединение:

3)
Table12
Field1
Field24
Field35
TableNum

Соответственно принадлежность к таблице и контент Field24 и Field35 четко определяетсязначением поля TableNum.

Отбор монотабличных данных производится чуть более длинным условием (скажем для варианта 2 при выборке данных, относящихся только к таблице 1 это будет WHERE (то_что_было) AND Field3 NOT Null), зато упрощается отбор совокупных данных...

PS. Я так понимаю что хостинг - чужой, и версию MySQL не проапдейтить...





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.2817 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.