|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Всем привет! Прошу помочь, есть таблица с столбцами: ID_код, Тип, Период, Выручка. Нужно сделать перекрестный запрос по двум условиям, чтобы содержание столбцов было следующее: ID_код - заголовок строк, Тип и Период - заголовок столбца, Выручка - значение, т.е. вместо 4 столбцов, должно получиться 2,столбец - ID_код, столбец -Тип и Период. Форум пролистал ничего похожего не нашел Вроде ничего сложного, да ни как не выходит..( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 20:01 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Сделал, сцепил поля Тип и Период в запросе! Может кому пригодится ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2014, 20:42 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Уважаемый знатоки! Прошу помочь, советом. В форме подчиненная таблица. Источник подчиненной таблицы перекрестный запрос (Запрос3). С помощью запроса (в поле формы) отображаются указанный код или клиент : s = "select * from [Запрос3]" If Not IsNull(Me.код) Then w = w & " AND [код клиента] LIKE " & Me.код & " " If Not IsNull(Me.Клиент1) Then w = w & " AND [Клиент] = " & Me.Клиент1 & "" If Not w = "" Then s = s & " where" & Mid(w, 5) Me.подчиненная.Form.RecordSource = s Данный запрос выполняется где-то 10-12 сек., можно изменить данный запрос чтобы уменьшить время поиска? PS Насколько я понимаю, причина в перекрестном запросе (Запрос3), т.к. пробовал его изменить на выборку, обновляется сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 14:14 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 14:59 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Заменив Like на равно, по времени обработки будет также(хотя согласен, корректно ставить равно ), про кавычки в курсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 15:28 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Не уже ли никто не сталкивался, как обновлять перекрестный запрос в форме?? Может на основе временной таблицы, только мне не понятно, как её обновлять на основе перекрестного запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 19:31 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, автортолько мне не понятно, как её обновлять на основе перекрестного запроса? увы, совсе не понимаю --что у вас на входе --и что надо получить --зачем нужен перекрестный запрос при 1-м то столбце ==== например пустили запрос за февраль --28 столбцов+3 группировочных(цех-участок-изделие) затем по цеху за 1 неделю марта сменилось все от группировочных столбцов до итоговых ====== вижу 1 вариант запустить , переписать модулем в постоянную рабочую таблицу, которую и смотреть в форме -- ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 21:10 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, да и итоги более высокого уровня можно добавить кодом естественно, чтобы округление не повлияло на суммы и можно добавить дополнительные столбцы(например итоги за квартал,проценты) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 21:13 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Спасибо, но проблема в другом. В форме есть подчиненная таблица, на основе перекрестного запроса. Перекрестный запрос необходим, чтобы в одном столбце были данные период/тип и значение сумма (важно, что в таком формате должны быть данные в подчиненной таблице). Вопрос: Поиск в форме очень долго обновляет (10-12 сек.), как можно данный процесс улучшить? Пробовал вставить обычный запрос (выборка), обновляет мгновенно. Вставил пример,для наглядности. PS В примере поиск в форме корректно работает, но вот если заполнить "итого база" и "справочник" данными (более 100тыс.строк), то появляются тормоза при поиске. Заранее благодарен ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2014, 22:53 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, Какие задачи выполняет Ваша БД-не понял для чего создается эта база Убедительная просьба опишите задачи которые Вы решаете типа: -вести учет клиентов -их займы -учет их платежей (как производится оплата) -и т.д ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 12:22 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
если четко не определить задачи БД создавать таблицы и формы рано ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 12:24 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
sdku, Есть итого база, где ведется учет по клиентам и вся доп. инфо. о клиентах(вообщем оч. много столбцов))) Есть справочник, где храниться только история о платежах клиента тип/период/сумма. Есть форма, куда для удобства изменения данных в справочнике, заносятся данные по изменению суммы/периода/типа. Обязательно, в форме нужна таблица со столбцами из итого база и справочника и для удобства восприятия информация и экономии места в таблице нужно чтобы в названии столбца было инфо по периоду и типу (2009карта, 2009наличные, 2010карта и т.д.), а значение стояла сумма. Все это сделано, все работает, НО т.к. перекрестный запрос используется в качестве источника данных для формы, форма работает ОЧЕНЬ МЕДЛЕННО. Как в таком случае быть? Я уже всю голову сломал, пока вижу один выход сводная таблица, но там визуализация данных хуже, хочется сделать так как в примере и без тормозов. Есть какие-нибудь идеи? Заранее благодарю за совет ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 13:12 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, Вы про индексы и ключевые поля чего-нибудь слышали? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 13:19 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
nord-woolf, Слышал, прошу прощение. Конечно, в примере который выложил забыл поставить, в итого базе ключевое поле на код и индекс. В справочнике помимо индекса тип/код/период, стоит еще отдельно на код. ВСЕ РАВНО, форма ТОРМОЗИТ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 13:30 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
А про типы данных полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 13:35 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
nord-woolf, Можно пояснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 13:39 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
С какой целью в таблице "Справочник" поля "период" и "сумма" имеют тип данных "Двойное с плавающей точкой"? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 13:41 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
nord-woolf, Согласен, не нужно! Изменил на "Длинное целое", тормоза остались. Итого база и справочник имеют более 100тыс. строк. К сожалению, но проблему не решило. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 14:07 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, -в справочниках ничего исправлять не надо крайне нежелательно -списки значений в поляхСоСписком желательно заменить на таблицы-справочники (разберитесь что такое справочник) -к тому что набросал добавьте поиск по клиенту или по договору. В таблицу платежи, на день платежа, можно добавлять запись с задолженностью (добавить в таблицу поле "долг" и заносить в него автоматически подсчитанную задолженность,если выплата не ежемесячная, то отражать это в договоре, добавив в соответствующую таблицу нужное поле-всяких нюансов много и они известны только разработчику-Вам) Не исправляйте существующие записи-лишаетесь истории. Рекомендую задуматься-форма работает медленно не потому ли, что структура какая-то левая (нахвиг при нормальной структуре в подчиненной форме источник перекрестный запрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 14:26 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Если предположить, что все типы данных полей таблиц обрели свои "кошерные" значения, индексы и ключи наложены должным образом, следующим этапом ускорения будет перенос наложения условий ограничения выборки из перекрестного запроса в базовый запрос - источник для перекрестного запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 14:27 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
nord-woolf, Не совсем понял,"следующим этапом ускорения будет перенос наложения условий ограничения выборки из перекрестного запроса в базовый запрос - источник для перекрестного запроса." Как это можно реализовать на моем примере? Можно привезти пример в прикрепленном файле или по конкретней описать. Заранее благодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 14:47 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
В вашем примере вы применяете условия ограничения выборки к результату работы перекрестного запроса (Sub show_result). Я же предлагаю сначала отобрать нужные записи в "Запрос1" ( ... FROM <здесь запрос с WHERE> ... ), а затем, ограниченный набор трансформировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 15:02 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
nord-woolf, Прошу прошение, не понимаю, как это можно реализовать на практике Получается сначала нужно делать запрос, что-то типо: 1."select * from [Запрос1] where [Запрос1].[Период] =" & Me.Период1.Value & " and [Запрос1].[Тип] ='" & Me.Тип1.Value & "'" а потом, типо 2. TRANSFORM Sum(Справочник.Сумма) AS [Sum-Сумма] SELECT [итого база].[Код клиента], [итого база].Клиент, [итого база].Регион, [итого база].поле4, [итого база].поле5 FROM [итого база] LEFT JOIN Справочник ON [итого база].[Код клиента] = Справочник.[Код клиента] GROUP BY [итого база].[Код клиента], [итого база].Клиент, [итого база].Регион, [итого база].поле4, [итого база].поле5 PIVOT [период] & [тип]; Если не верно, можно поправить мой запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 15:20 |
|
Перекрестный запрос
|
|||
---|---|---|---|
#18+
Pashy, подозреваю, что у вас 100т превращаются в 500т пристыковка по 1 полю,[Код клиента] Код: sql 1.
группировка по 5 полям Код: sql 1.
или [итого база].Регион, [итого база].поле4, [итого база].поле5 однозначны по коду клиента ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2014, 16:14 |
|
|
start [/forum/topic.php?fid=45&tid=1616490]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 255ms |
total: | 389ms |
0 / 0 |