|
|
|
| Всем привет!
Из приведённой ниже таблицы надо выбрать все поля и строки анализируя поле IDm в пределах группы IDMC. В поле IDm встречаются повторы, и если есть повтор нужно выбрать только одну строку с минимальным значением Num
IDMap IDMC IDTU Num IDm
563 668 КШ 1 1
806 668 Прокат 2 1
1049 668 Окраска 4 3
1052 767 КШ 8 1
1315 767 Прокат 7 1
1449 767 Окраска 6 3
|
Запрос должен выводить следующие данные:
IDMap IDMC IDTU Num IDm
563 668 КШ 1 1
1049 668 Окраска 4 3
1315 767 Прокат 7 1
1449 767 Окраска 6 3
|
Я как мог придумал, но получилось это 4-мя запросами и ооочень долго выводится. Может что-нить дельное подскажете? | |
|
| |
|
|
|
| так?
SELECT Таблица4.IDMap, Таблица4.IDMC, Таблица4.IDTU, Таблица4.Num, Таблица4.IDm
FROM Таблица4
WHERE (((Таблица4.Num) In (SELECT Min(a.Num)
FROM Таблица4 as a
WHERE a.IDm =Таблица4.IDm and a.IDMC=Таблица4.IDMC;
)));
|
| |
|
| |
|
|
|
| Снимаю шляпу . Оно | |
|
| |
|
|
|
| Создаете запрос с Group By по IDMC и IDm, Min(Num) As Num
Если б не поля IDMap и IDTU, то этого было б достаточно.
Строим запрос2 на таблице и запросе1. Связываем их по полям IDMC, IDm, Num, Group By по IDMC и IDm, First для других полей.
Если результат понравится, можно объединить это в одном запросе2. Для этого копируете SQL запроса1 (без завершающей ";") и в режиме SQL запроса2 строку:
...FROM Таблица INNER JOIN запрос1 ON..
заменить на:
...FROM Таблица INNER JOIN (Текст запроса1) AS запрос1 ON ... | |
|
| |
|
|
|
| Да, у коллеги КАБАН попроще будет, чем у меня...
Вот только при повторяющеся в группе минимальной сумме будет возвращать по несколько записей. | |
|
| |
|
|
|
| в условиях об этом вроде ничего не было сказано :) | |
|
| |