![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
про UNION ... [D5, IB6.x]
Andrey V. © (2005-07-11 08:46:00)запрос :
select t1.name from table1 t1
UNION
select t2.name from table2 t2
работал, пока поля name были одинаковыми по длине.
У одной таблицы изменилась длинна поля name и запрос перестал работать.
Подскажите как в запросе их привести к одной длине ?
GanibalLector (2005-07-11 23:54:00) [1]Fay правду говорит ;)
Примерно так это выглядит :
select cast(t1.name as varchar(20)) as name from table1 t1
UNION
select cast(t2.name as varchar(20)) as name from table2 t2
Desdechado (2005-07-11 19:23:00) [2][7]
лопаты с граблями не путай
попробуй - увидишь
evvcom (2005-07-11 12:04:00) [3]
> сортирует все равно - это побочный эффект при поиске-удалении
> дубликатов
а...а... Так это тогда и JOIN тоже "сортирует".
Desdechado (2005-07-11 11:51:00) [4]2 evvcom
ORDER BY - явная сортировка
без нее UNION (без ALL) сортирует все равно - это побочный эффект при поиске-удалении дубликатов, причем сортирует по всему списку полей в порядке их следвания в SELECT
и вообще, про дубликаты я заикнулся специально - это типичные грабли, на которые наступают почти все
evvcom (2005-07-11 11:46:00) [5]
> учти, union убивает дубликаты и сортирует
не знаю как в IB, но по стандарту, чтобы UNION не убивал дубликаты используется дополнительно ALL. А насчет сортировки вообще впервые слышу. Сортировка делается через ORDER BY
Desdechado (2005-07-11 11:19:00) [6]учти, union убивает дубликаты и сортирует
Anatoly Podgoretsky (2005-07-11 09:07:00) [7]Тогда возникает вопрос, почему ты пытаешься объединять две разные, не совместимые таблицы
Fay (2005-07-11 08:56:00) [8]Andrey V. © (11.07.05 8:46)
Ну добей меньшее CAST-ом.
evvcom (2005-07-11 08:50:00) [9]Возможно, длина поля в результате равна длине поля из первого селекта. Попробуй поменять селекты местами.