powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / 'Украсивить' запрос
9 сообщений из 9, страница 1 из 1
'Украсивить' запрос
    #32252681
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть запрос:
Код: plaintext
1.
2.
3.
4.
SELECT dbo_tblAddLine3c.Key_pr
FROM [SELECT dbo_tblAddLine3c.Delivery, dbo_tblAddLine3c.LineNr, Min(dbo_tblAddLine3c.Detail_code) AS Detail_code, dbo_tblAddLine3c.Model_code
FROM dbo_tblAddLine3c
WHERE (((dbo_tblAddLine3c.Delivery)= 1434 ))
GROUP BY dbo_tblAddLine3c.Delivery, dbo_tblAddLine3c.LineNr, dbo_tblAddLine3c.Model_code]. As MaterialDetail_min INNER JOIN dbo_tblAddLine3c ON (MaterialDetail_min.Model_code = dbo_tblAddLine3c.Model_code) AND (MaterialDetail_min.Detail_code = dbo_tblAddLine3c.Detail_code) AND (MaterialDetail_min.LineNr = dbo_tblAddLine3c.LineNr) AND (MaterialDetail_min.Delivery = dbo_tblAddLine3c.Delivery);


можно его покрасивее его сделать, что ли...
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32252812
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как минимум можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT dbo_tblAddLine3c.Key_pr
FROM (
  SELECT AL3.Delivery, AL3.LineNr, Min(AL3.Detail_code) AS Detail_code, AL3.Model_code
  FROM dbo_tblAddLine3c AL3
  WHERE 
    AL3.Delivery= 1434 
  GROUP BY AL3.Delivery, AL3.LineNr, AL3.Model_code
) As MDm INNER JOIN dbo_tblAddLine3c AL3 ON
  (MDm.Model_code = AL3.Model_code) AND
  (MDm.Detail_code = AL3.Detail_code) AND
  (MDm.LineNr = AL3.LineNr) AND
  (MDm.Delivery = AL3.Delivery)
;


mahoune
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32253321
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо насколько я понял, поменялось только оформление
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32253369
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это смотря что за задачу ты ставишь, может тебе вообще что-то другое надо?
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32253398
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хотел бы его облегчить...
но не визуально - эт побарабану
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32253429
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это понятно! :)
Что он должен делать? Я, если честно, не очень понял. Брать минимум по Detail_code и потом прицеплять остальные поля из той-же таблицы?
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32253470
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин жеж... максимум - это перекинуть (((ххх.Delivery)=1434)) еще и в условия внешнего, => выбросить Delivery из джойна и группировок. Но еще вопрос, каковы индексы, и не является ли Delivery частью составного, за которой следуют другие поля группировки. (тогда может быть хуже).

чтобы считало пошустрее - построить индекс наподобие (LineNr,Model_code,Detail_code).
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32254270
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индексы как есть... менять нельзя...

ключ:

Delivery & LineNr & Model_code & Detail_code & Key_pr

цель...

для каждой тройки Delivery & LineNr & Model_code может быть несколько не одинаковых Detail_code

надо выбрать минимальный Detail_code для каждой тройки и выдать результатом Key_pr
...
Рейтинг: 0 / 0
'Украсивить' запрос
    #32254558
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдается, если _ключ_ именно тот, что описан, то выбрасывать Delivery из группировки не стоит (т.е. - нет особой разницы... во внешнем указание Delivery =1434 явным образом в WHERE тоже не повредит, тут надо тестировать время исполнения, причем несколько раз -"компиляция", кеш, и т.п., не думаю, что что-нить изменится).

Радикально:
можно выполнить только группировку (на всякий случай не таблицы, а запроса с ORDER BY (поля ключа _по порядку_) (ну и с WHERE Delivery=14...)), по полям (LineNr,Model_code,Detail_code), с выводом First(Key_pr) AS Key_pr/ (если ключ по полю Detail_code растущий, Last - если убывающий).
- Т.е. реализовать что-то наподобие прогонки по рекордсету методом Seek по части индекса в условии поиска (с возвратом первой/последней из найденных). То же должно работать без индекса, но шибко медленнее. Когда-то что-то такое делал и запросами, но надо проверить.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / 'Украсивить' запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]