Форум: "Базы";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];
ВнизОшибка про множество таблиц в запросе Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.01 c