|
|
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Господа, есть такая проблема, сам додумать не могу, что-то шарики за ролики заскакивают. Суть в следующем: Есть таблица (ГлавТаб), к ней присоединена еще таблица (ПодчТаб1), которой присоединена еще таблица (ПодчТаб2). ГлавТаб | --ПодчТаб1 | -----ПодчТаб2 На основе всех 3х таблиц строится запрос с Групповыми операциями. Там что-то группируется, что-то считается, что-делиться и тд. Проблема в том, что нужно получить кол-во записей в ГлавТаб сгуппированные по одному из полей. Включаю "Групповые операции", выбираю Count по полю id , и "Группировка" по полю "Name" Беда в том, что в итоге получается число которое включает в себя кол-во подчиненных записей в ПодчТаб2. Например: ГлавТаб содержит поля: [id] [Name] ПодчТаб1 содержит две подчиненные записи (по отношению к ГлавТаб): [id1] [id] [Name1] ПодчТаб2 содержит три подчиненные записи (по отношению к ПодчТаб1): [id2] [id1] [Name2] Так вот в запросе с "Групповыми операциями" при группировке по [Name] и выборе Count по полю [id] из ГлавТаб запрос выдает 3, тогда как нужно чтобы выдавал 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 16:29 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Ну где вы монстры Access'a??? Все молчат :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 09:23 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
без обид... ок? ты сам прочитай, что написал... меня лично сколболсило ещё до примера... >Там что-то группируется, что-то считается, что-делиться и тд. наверное где-то здесь ошибся... >Включаю "Групповые операции", выбираю Count по полю id, и "Группировка" >по полю "Name" Беда в том, что в итоге получается число которое включает >в себя кол-во подчиненных записей в ПодчТаб2. при использовании Count "Группировка" выставляеться автоматом по всем остальным полям... если я конечно тебя правильно понял ты бы примеры что называеться живые привёл... какие и где данные были и что на выходе хочешь получить... тогда глядишь и монстры подтянуться :) Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 09:33 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
OK, без обид. Попытаюсь объяснить поподробнее. Таблица "tblOrder" содержит записи об отправках груза. Поля: idOrder (тип Счетчик), From, Where, Cost, TranspType (вид транспорта: а/м, ж/д) Таблица "tblInvoice" связана с таблицей "tblOrder" по полю idOrder и содержит данные о номерах накладных, входящих в заказ (в один заказ может входить несколько накладных). Поля: idInvoice (тип Счетчик), idOrder, Invoice. Таблица "tblGoods" связана с таблицей "tblInvoice" по полю idInvoice и содержит данные о товарах входящих в накладную (в одну накладную может входить несколько товаров). Поля idLine (тип Счетчик), idInvoice, idFG (подцепляет запись товара из табл. "tblFG"), Quantity. Когда формируется заказ на отправку, заполняются все указанные поля, т.е. в каждом конкретном заказе мы знаем, Что, Куда, Откуда и сколько уехало и как уехало. Теперь требуется создать запрос отвечающий на вопрос: сколько товара уехало по всем городам, по видам транспорта. Иначе, нам нужен запрос с групповыми операциями, который бы, группировал все отправки по городам и по виду транспорта, а также считал сколько транспортных средств уехало в каждый конкретный город, общую сумму издержек по отправкам в каждый город. Проблема в том как подсчитать кол-во транспортных средств: по идее каждая строчка в "tblOrders" - это одно транспортное средство. Поэтому на надо просто подсчитать кол-во idOrder в запросе через Count и дело в шляпе. Делаем запрос и получаем следующее: Группировака по видам транспортного средства - ОК Группировака по городу - ОК Сумма издержек - ОК Кол-во транспортных средств - беда. Дело в том, что если, например, в Урюпинск у нас ехала одна машина, в которой лежало 2 накладных, а каждой из них было по два вида товара, то Count выдает 4, хотя реально ехала одна машина. Как сделать так, чтобы он правильно считал? Best Regards ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 09:54 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Дополнение, кстати, случайно обнаружил, что и "Сумма издержек" тоже суммируется неправлильно. Т.е. если в Урюпинск ехала 1 машина с 2мя накладными и в каждой было по одному виду товара, а стоимость доставки 1000руб. То в суммировании запрос выдает 2000руб. Вот такие грустные дела. Best Regards ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:02 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
А зачем в запрос цеплять данные подчиненных таблиц? Или нужно вывести что-то еще кроме перечисленного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:04 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Да, к сожалению данные из подчиненных таблиц просто необходимы. Без них как раз все работает, но без них никак нельзя. Может проблему можно решить через 2 запроса, один с подчинными таблицами, другой без и третий их объединяет. Сейчас работаю над этим, но пока без успехов. Best Regards ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:06 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Option Compare Database Option Explicit Dim cursum As Double Dim curind As Long ' В запросе вызываешь функцию getcursum(idOrder) Public Function getcursum(ind As Long) As Double If curind <> ind Then curind = ind cursum = cursum + 1 End If getcursum = cursum End Function Public Function setCurSum() cursum = 0 curind = 0 End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:10 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Извени если что-то не догнал, но насколько я понял что нихде, не пишется сколько машин занято на конкретный Order... >Дело в том, что если, например, в Урюпинск у нас ехала одна машина, в >которой лежало 2 накладных, а каждой из них было по два вида товара, то >Count выдает 4, хотя реально ехала одна машина. я думаю доступен и обратный вариант... Order - один а машины две... наверное поле надо будет вводить... но если на определённый горол по-любому идёт одна машина в какой то отрезок времени тогда просто в селекте надо считать города, за определённый отрезок времени Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:18 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
To Sfagnum: одна отправка = одна запись в tblOrder = одно транспортное средство. Отдельного поля для записи кол-ва транспортных средств нету. Попробовал по сделать Count по городам, таже беда. Best Regards ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:34 |
|
||
|
Функция Count в запросе с подчиненными таблицами
|
|||
|---|---|---|---|
|
#18+
Ну батенька, коли так то звиняйте, 2 как 1 посчитать никак... >Попробовал по сделать Count по городам, таже беда. SELECT Count([Where]) As [Where] FROM tblOrder - не тот результат выдаёт? Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32421876&tid=1676471]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 323ms |

| 0 / 0 |
