Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Неожиданная проблема с UNION  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
Уважаемые коллеги!
При выполнении запроса

select distinct v.docid, v.BO, V.[as],V.Sigla  from library2.dbo.book_01003 B 
JOIN library2.dbo.book_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.book_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 

UNION 

select distinct v.docid, v.BO, V.[as],V.Sigla from library2.dbo.turseu_01003 B 
JOIN library2.dbo.turseu_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.turseu_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 


в среде SQL Server с клиентской машины все нормально

При выполнении этого же запроса из под HTML5 Builder

select distinct v.docid, v.BO, V.[as],V.Sigla from library2.dbo.book_01003 B 
JOIN library2.dbo.book_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.book_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 
UNION 
select distinct v.docid, v.BO, V.[as],V.Sigla from library2.dbo.turseu_01003 B 
JOIN library2.dbo.turseu_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.turseu_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 


получаю сообщение об ошибке

Application raised an exception class PDOException with message 'SQLSTATE[42000]: [Microsoft][SQL Server Native Client 10.0][SQL Server]All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.'

Что же делать?
20 май 14, 16:43    [16043705]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
Glory
Member

Откуда:
Сообщений: 104760
topdon
При выполнении этого же запроса из под HTML5 Builder

Откуда вы знаете, какие команды отсылает ваш HTML5 Builder серверу ?

ЗЫ
И уберите distinct, UNION и так отсеивает дублирующие строки
20 май 14, 16:46    [16043730]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
topdon,

зачем там distinct, не понимаю
20 май 14, 16:47    [16043736]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
iap,
distinct убрал

откуда знаю




 // отладочная печать
      foreach($ASQL as $SQL1) {echo "$SQL1<br/>\n";}

      $this -> Query1->SQL = $ASQL;

      $this->Query1->Close();
      $this->Query1->Open();


выдача эхо

select v.docid, v.BO, V.[as],V.Sigla from library2.dbo.book_01003 B 
JOIN library2.dbo.book_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.book_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 
UNION 
select v.docid, v.BO, V.[as],V.Sigla from library2.dbo.turseu_01003 B 
JOIN library2.dbo.turseu_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.turseu_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 


конечно, это все равно недостаточно для Вас, но, поверьте, я так все время запросы тестирую, но это первый случай.
А при запуске в среде выдается 44 записи. просто копирую этот же запрос и запускаю.
20 май 14, 17:06    [16043883]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
Glory
Member

Откуда:
Сообщений: 104760
topdon
конечно, это все равно недостаточно для Вас, но, поверьте, я так все время запросы тестирую, но это первый случай.

Вы можете тестировать так, как вам угодно.
Если бы сервер что-то делал неправильно, то они делал бы это независимо от того, какое приложение с ним работает
20 май 14, 17:17    [16043968]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
vikkiv
Member

Откуда: London
Сообщений: 2712
попробуй (хотя маловероятно)
SELECT...
UNION
(SELECT...)

или
select*from
(SELECT...
UNION
(SELECT...))x

третий вариант - продцедура (но права их запуска для веб приложений - сам знаешь..)
20 май 14, 18:19    [16044412]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
vikkiv,

Проблема в том, что здесь вмешивается ZQL Native Client, поскольку среда работает с сервером напрямую.
Подозреваю, что если сделаю деплоймент как есть на сервер, то он будет работать как миленький.
20 май 14, 18:49    [16044519]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
topdon
конечно, это все равно недостаточно для Вас, но, поверьте, я так все время запросы тестирую, но это первый случай.
А при запуске в среде выдается 44 записи. просто копирую этот же запрос и запускаю.
Запустите SQL Profiler и посмотрите что реально пытается выполнить на сервере ваше приложение.

topdon
Проблема в том, что здесь вмешивается ZQL Native Client, поскольку среда работает с сервером напрямую.
Можете еще на картах погадать.
20 май 14, 20:10    [16044814]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 292
попробуйте через СТЕ
with cte (
docid, 
BO, 
as_,
Sigla 
) as (
select v.docid, v.BO, V.[as],V.Sigla  from library2.dbo.book_01003 B 
JOIN library2.dbo.book_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.book_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%' 

UNION 

select v.docid, v.BO, V.[as],V.Sigla from library2.dbo.turseu_01003 B 
JOIN library2.dbo.turseu_01003X X3 on X3.ItemId = B.ItemId 
JOIN libra1.dbo.turseu_bo V on V.docid=x3.docid 
where B.Item LIKE '%альбеков%'

)

select * from cte
21 май 14, 11:01    [16046702]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 292
но судя по
library2.dbo.turseu_01003 B
library2.dbo.turseu_01003X X3
libra1.dbo.turseu_bo

у вас там еще тот зоопарк с акробатами
21 май 14, 11:03    [16046716]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
KRS544
Member

Откуда:
Сообщений: 497
V.[as] - что это?
21 май 14, 11:25    [16046907]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
KRS544
Member

Откуда:
Сообщений: 497
KRS544
V.[as] - что это?
а ссори, показалось...
21 май 14, 11:27    [16046936]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
KRS544
KRS544
V.[as] - что это?
а ссори, показалось...
Вообще-то, я тоже вижу...

Что же нам теперь делать?
21 май 14, 11:30    [16046964]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
Двоичник,
через cte попробовал- в среде работает,
а через модуль дает ошибку ту же самую- неодинаковое число полей в запросе.
21 май 14, 19:18    [16051028]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданная проблема с UNION  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Чудес не бывает. Ловите в профайлере, какой запрос приходит на сервер. Что-то его на полпути искажает (дополняет).
21 май 14, 19:47    [16051181]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить