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

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

UNION query. SQL [MySQL]


Шмель ©   (2007-01-10 10:30:00) 

Столкунулся со следующей проблемой не знаю как обойти!

Вот такой запрос
(SELECT o.*, i.* FROM orders as o, order_items as i WHERE o.order_id=i.order_id) UNION (SELECT o.*, i.* FROM orders_arch as o, order_items_arch as i WHERE o.order_id=i.order_id) ORDER BY time_create DESC LIMIT 50

в результате выдает результсэт где имена колонок стоят без o. i. а они обязательно должны быть (т.е. например мне должно вернуться, o.name, o.key, i.some,.... а возвращает просто name, key, some). Проблема здесь именно в UNION, если выполнять select'ы отдельно - то все ОК. В чем проблема разобраться не могу, в хелпе тоже ничего путного не нашел. Может кто сталкивался!

Вообщем, заранее спасибо


Anatoly Podgoretsky   (2007-01-10 12:50:00) [1]

> Шмель  (10.01.2007 10:30:00)  [0]

Я не знаю имеет ли MySQL оптимизатор или нет, но в любом случае такой запрос на помойку, все поля должны быть перечислены ЯВНО и если ты жалуешься, что мол их много, то сейчас самый, самый момент задуматься, а ту ли я профессию выбрал, ведь в ней оказывается надо работать и учиться.


Desdechado   (2007-01-10 11:13:00) [2]

> имена колонок стоят без o. i. а они обязательно должны быть
Странное желание.
Какой смысл в разборах по алиасам? Хотя, если есть одноименные, но разносмысловые поля в этих таблицах, тогда лучше им явные имена присвоить через AS. Но тогда не понятно, зачем делать разносмысловые имена одинаковыми?


ЮЮ   (2007-01-10 10:59:00) [3]


> Проблема здесь именно в UNION, если выполнять select'ы отдельно
> - то все ОК

Что, так и возвращает o.key, i.some ? Да уж, силен ЁSQL :)

Поле в orders и order_items всё-равно разные, не спутаешь.


Шмель   (2007-01-10 10:58:00) [4]


> А зачем, если не секрет?


Этот результсэт затем разбирается уже готовым отлаженным механизмом опираясь как раз на префиксы


evvcom   (2007-01-10 10:58:00) [5]

> [5] Шмель ©   (10.01.07 10:53)
> их там много....и ничего не выкинешь

Значит займись обезьяньей работой: перечислением всех o.* и i.*


Sergey13   (2007-01-10 10:55:00) [6]

> [0] Шмель ©   (10.01.07 10:30)
> а они обязательно должны быть
А зачем, если не секрет?


Шмель   (2007-01-10 10:53:00) [7]


> stone ©   (10.01.07 10:44) [3]


Это bad


> Ega23 ©   (10.01.07 10:47) [4]


Ну сейчас пересчитал, там 45 полей, ошибся немножко:), так или иначе их там много....и ничего не выкинешь


Ega23   (2007-01-10 10:47:00) [8]


> в табличках >50 полей


За все 7+ лет занятия БД видел только 1 таблицу в которой было около 35 полей.


stone   (2007-01-10 10:44:00) [9]


> не катит - в табличках >50 полей

Чудес, к сожалению, не бывает.

ЗЫ. Тяжела и неказиста жизнь простого программиста...


Шмель   (2007-01-10 10:40:00) [10]


> stone ©   (10.01.07 10:32) [1]


Это в смысле o.name as 'o.name' и т.д... не катит - в табличках >50 полей


stone   (2007-01-10 10:32:00) [11]


> в результате выдает результсэт где имена колонок стоят без
> o. i. а они обязательно должны быть

тогда нужно присвоить колонкам псевдонимы


Наверх

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