|
|
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Необходимо осуществить поиск в таблице "Заказы", потом по отфильтрованным заказам необходимо осуществить поиск в таблице "Касса". На данный момент я реализовал это так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Это хорошо пока заказов мало, а если их будет хотя бы 500, то ошибка: "Слишком сложный запрос". Какие есть идеи по оптимизации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 10:46 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. На этот изврат не обращайте внимание :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 10:54 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
а одним запросом с обьединением таблиц это сделать нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:04 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
напиша по подробнее структуру таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:06 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Не выспался наверное :) Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:19 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Тут есть другая проблема. результат примерно такой: Код: plaintext 1. 2. 3. 4. 5. 6. Далее мне необходимо провести анализ, т.е., например, посчитать общее кол-во путевок "Заказ.Количество", а как это сделать, если эти числа дублируются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:36 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
На самом деле тут вообще полная задница получается, на самом деле во вторичной выборке поиск идет в двух таблицах (Банк и Касса), т.е. дублируется вообще вся информация :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:42 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Предлагаю вернуться к началу топика... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:52 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
>>результат примерно такой: Заказ.Реф № Заказ.Количество Касса.Приход Касса.Расход 1\23 2 45 1\23 2 56 1\23 2 78 2\43 3 65 2\43 3 98 А если сгруппировать по Заказ.Реф № ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 14:01 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял вопрос, то ответ на него называется лефт джойн. Select * from cash left join (select * from orders where ...) on (cash.RefN=orders.RefN) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 14:07 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
автор писал:Предлагаю вернуться к началу топика... Вместо OR попробуй IN. Или используй forms("MyForm").Filter как условие отбора записей по кассе. А далее и вправду Group By напрашивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 14:12 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. Какой тут в попу Group By? :) Если добавить Group By, то ничего не измениться!!! ----- Вот такой лэфт джойн приводит к описанному выше. Код: plaintext 1. 2. ---- Geo Ошибка синтаксиса там где-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:23 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Тады попробуй покувыркайся с коррелирующими запросами типа: Select t1.[Реф №], t1.Количество, (Select Касса.Приход From Касса Where t1.[Реф №] = Касса.[Реф №]) As Приход,(Select Касса.Расход From Касса Where t1.[Реф №] = Касса.[Реф №]) As Расход From Заказ Where... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:38 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Пардон! From Заказ As t1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:39 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Опять Пардон! Не зная структуры... Может быть и так Select t1.[Реф №], Count(t1.[Реф №]) as Количество, (Select Касса.Приход From Касса Where t1.[Реф №] = Касса.[Реф №]) As Приход,(Select Касса.Расход From Касса Where t1.[Реф №] = Касса.[Реф №]) As Расход From Заказ As t1 Where... Group By t1.[Реф №] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:42 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
И, наконец, последний пардон! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:45 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Мистер Пардон --- С запросами косяк Решил написать функцию, создающуюю временную таблицу и засовывающую туда то, что нужно :) Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:49 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Мистер многоступенчатая выборка! А ты их попробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:53 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
автор писал:Решил написать функцию, создающуюю временную таблицу и засовывающую туда то, что нужно В mdb при многопользовательском доступе кучу всего предусмотреть придется. А запросы, того типа, что я тебе настругал у меня работают без проблем и быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 16:56 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Думаю эти вложенные Select с Where будут изрядно тормозить, если таблица более менее приличиная, в своих запросах я очень часто поэтому отказываюсь от таких сложных запросов в пользу скорости через создание временных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:01 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Такой запрос возвращает недублирующуюся информацию, но по всем заказам ([Реф №]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:05 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
автор писал:Думаю эти вложенные Select с Where будут изрядно тормозить Если их формировать на клиенте, то, наверное. Но, если mdb, то как создавать временные таблицы для многопользовательской работы? Create Table #Tb1 здесь не прокатит. Значит будет создаваться постоянная таблица (а ну как ее уже другой создает?). Проверять наличие? Добавлять RND()? Отнюдь не гарантия уникальности... И потом лучше все-таки проверить на своей БД, что быстрее работает сложный (кстати не супер) запрос или создание таблицы, заполнение, затем выборка из нее. Хотя в adp я очень часто их использую, чтобы не заморачиваться со сложными запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:14 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Посмотри условие! автор писал: потом по отфильтрованным заказам Forms("FormName").Filter - возвращает строку фильтра по форме FormName попробуй эту конструкцию подставить в Where (врать не буду, сам не пробовал вставлять в сохраненный запрос) а уж при формировании запроса программно подставить это в условия и вовсе нет проблем, как "мне ка-а-а-ается". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:22 |
|
||
|
Многоступенчатая выборка
|
|||
|---|---|---|---|
|
#18+
Forms("FormName").Filter Форма не имеет иточника данных. --- Количетсво заказов в выборке колеблется от 0 до бесконечности :). В таком запросе это можно учесть только путем предложенным мною в начале топика. А этот "путь" не поддерживает большое число заказов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:36 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32327712&tid=1678169]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 394ms |

| 0 / 0 |
