Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

Ошибка про множество таблиц в запросе   Найти похожие ветки 

 
big_bugzy   (2003-12-11 15:32) [0]

SQL сказал ошибку, говорит в запросе больше 256 таблиц и выполнить его он не может...
это как-нибудь лечится??


 
MV   (2003-12-11 15:33) [1]

Покажи запрос, если не жалко!


 
Stas ©   (2003-12-11 15:33) [2]

А их действительно больше ?


 
Johnmen ©   (2003-12-11 15:36) [3]

>Покажи запрос, если не жалко!

Вот только этого НЕ НАДО !!!


 
big_bugzy   (2003-12-11 15:47) [4]

запрос типа

SELECT * FROM TABLE LEFT JOIN(SELECT COUNT(field),TABLE_ID FROM TABLE2 LEFT JOIN TABLE ON TABLE2.TABLE_ID = TABLE.ID GROUP BY TABLE2.TABLE_ID) AS TAB1 ON TABLE.ID = TAB1.TABLE_ID
LEFT JOIN(SELECT COUNT(field),TABLE_ID FROM TABLE2 LEFT JOIN TABLE ON TABLE2.TABLE_ID = TABLE.ID GROUP BY TABLE2.TABLE_ID) AS TAB2 ON TABLE.ID = TAB2.TABLE_ID ....


примерно так вроде...
этих TAB может быть несколько...
в моем конкретном случае их 10 ,сам запроос получился примерно на 4500 символа...


 
Stas ©   (2003-12-11 15:49) [5]

А представления есть ?


 
big_bugzy   (2003-12-11 15:50) [6]

нет, вьюх нету


 
Stas ©   (2003-12-11 15:52) [7]

А QueryAnalizer что говорит ?


 
big_bugzy   (2003-12-11 15:53) [8]

в общем, вот начало запоса...

SELECT [NAME], Kol1, Kol2, Kol3, Kol4, Kol5, Kol6, Kol7, Kol8, Kol9, Kol10, Kol
FROM Lk_EvGroup LEFT JOIN
(SELECT COUNT(EVENT_PK) AS Kol1, EVGROUP_ID
FROM Vw_Event LEFT JOIN
Lk_EvGroup ON Vw_Event.EVGROUP_ID = Lk_EvGroup.[ID]
WHERE (Lk_EvGroup.L_TSZ = 1) AND (TSZ = 1)
GROUP BY Vw_Event.EVGROUP_ID) AS Tab1 ON Lk_EvGroup.[ID] = Tab1.EVGROUP_ID LEFT JOIN
(SELECT COUNT(EVENT_PK) AS Kol2, EVGROUP_ID
FROM Vw_Event LEFT JOIN
Lk_EvGroup ON Vw_Event.EVGROUP_ID = Lk_EvGroup.[ID]
WHERE (Lk_EvGroup.L_TSZ = 1) AND (TSZ = 2)
GROUP BY Vw_Event.EVGROUP_ID) AS Tab2 ON Lk_EvGroup.[ID] = Tab2.EVGROUP_ID LEFT JOIN
...

WHERE Lk_EvGroup.L_TSZ = 1


 
big_bugzy   (2003-12-11 15:54) [9]

Аналайзер говорит что таблиц много, больше 256...


 
big_bugzy   (2003-12-11 15:54) [10]

Could not allocate ancillary table for view or function resolution. The maximum number of tables in a query (256) was exceeded.


 
Stas ©   (2003-12-11 15:56) [11]

И Дельфа и Анализер говорят одно и тоже ?


 
big_bugzy   (2003-12-11 15:56) [12]

ой, всетаки есть вьюха...


 
big_bugzy   (2003-12-11 15:57) [13]

ошибку возвращает сервер, дельфи ее только передает ...


 
Stas ©   (2003-12-11 15:57) [14]

А может в ней больше 256 табл. или вобщем ?


 
Stas ©   (2003-12-11 15:58) [15]

ошибку возвращает сервер, дельфи ее только передает ...

Я знаю. Просто если ты используешь Локальный курсор то сообщения могут отличатся.


 
big_bugzy   (2003-12-11 16:00) [16]

курсор локальный, сообщения одинаковые...


 
big_bugzy   (2003-12-11 16:01) [17]

во вью 3 таблицы, но она используется в левых подстановках постоянно...


 
big_bugzy   (2003-12-11 16:03) [18]

Я ошиюся... вью ссылается на еще одну вью в которой 9 таблиц, итого получаем 12...


 
MV   (2003-12-11 16:04) [19]

Хранимые процедуры?


 
big_bugzy   (2003-12-11 16:05) [20]

Хранимые процедуры?

нету


 
Stas ©   (2003-12-11 16:08) [21]

Может обновить MDAC ?


 
big_bugzy   (2003-12-11 16:09) [22]

2.7 стоит...


 
Stas ©   (2003-12-11 16:12) [23]

А ты сам запрос попробуй урезать. для эксперемента или разбить на несколько представлений


 
big_bugzy   (2003-12-11 16:15) [24]

с эти немного сложнее, запрос формируется динамически, динамически его разбивать может не получиться...
я думал что може можно как-нибудь заставить сервер обработать запрос с числом таблиц больше 256...
а так придется менять все похоже, и выполнять все в несколько приемов...


 
MV   (2003-12-11 16:15) [25]

Используйте ХП!


 
big_bugzy   (2003-12-11 16:16) [26]

да, сам запрос работате, если в нем прицеплено меньше 6 левых джоинов...


 
big_bugzy   (2003-12-11 16:17) [27]

ХП это что? винда ХП??


 
MV   (2003-12-11 16:17) [28]

Вынесите все на клиента.


 
MV   (2003-12-11 16:17) [29]

ХП - хранимые процедуры


 
big_bugzy   (2003-12-11 16:18) [30]

понятно, буду пробовать, хотя посмотрим...


 
Stas ©   (2003-12-11 16:19) [31]

Скорее ошибка не в кол-ве таблиц а в объеме запроса 4,5 кб - это немало.


 
Zz_   (2003-12-11 16:20) [32]

Это принцып

declare @t table (...)
insert into @t SELECT EVGROUP_ID, TSZ, KOLX = COUNT(EVENT_PK)
FROM Vw_Event
LEFT JOIN
Lk_EvGroup ON Vw_Event.EVGROUP_ID = Lk_EvGroup.[ID]
WHERE (Lk_EvGroup.L_TSZ = 1)
GROUP BY Vw_Event.EVGROUP_ID, TSZ

SELECT [NAME],
Kol1 = case when TSZ = 1 then KOLX else 0 end,
Kol2 = case when TSZ = 2 then KOLX else 0 end,
...
FROM Lk_EvGroup
LEFT JOIN @t ON Lk_EvGroup.[ID] = Tab1.EVGROUP_ID and TSZ = 1
LEFT JOIN @t ON Lk_EvGroup.[ID] = Tab1.EVGROUP_ID and TSZ = 2
LEFT JOIN
...
WHERE Lk_EvGroup.L_TSZ = 1


 
big_bugzy   (2003-12-11 16:24) [33]

всем спасибо, я понял что нужно все поменять... буду менять...


 
Stas ©   (2003-12-11 16:26) [34]

big_bugzy (11.12.03 16:24) [33]

А что ? если не секрет


 
big_bugzy   (2003-12-11 16:31) [35]

запрос буду менять...
если не получиться, то считать поэтапно буду, а не все разом...
но это зжорово замедляет процесс...


 
Stas ©   (2003-12-11 16:34) [36]

А ! Я думал ты нашел в чем проблема...



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.019 c
14-25551
MadAngel
2003-12-18 15:50
2004.01.09
Галогеновая лампа


1-25328
It
2003-12-22 15:44
2004.01.09
StringGrid в Excel


6-25466
Ich Hasse
2003-10-03 17:27
2004.01.09
Вывод HTML текста


14-25513
Stilgar
2003-12-15 20:17
2004.01.09
Чем Windows 2000 лучше XP?


1-25435
Фагот
2003-12-22 11:37
2004.01.09
Простой ComboBox