![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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. а они обязательно должны быть
тогда нужно присвоить колонкам псевдонимы