Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сделать чтобы в запросе показывались только наименьшие значения / 17 сообщений из 17, страница 1 из 1
24.01.2005, 12:41:49
    #32879786
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Сделал запрос на поиск стоимости определенного артикула запчасти, стоимость выбирается из четырех прайсов. Немогу понять как сделать так чтобы в этом запросе показывалось только минимальное значение из того прайса в котором оно содержится.
ПРИМЕР

Артикул Наименование Прайс1 Праис2 Праис3 Праис4
15208-9F600 фильтр масл 9.56
16546-V0100 фильтр возд. 15.58
22401-20J06 Свеча зажигания 3.56
11026-01M02 кольцо 0.56
...
Рейтинг: 0 / 0
24.01.2005, 12:44:58
    #32879796
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
S.W.I.N.EСделал запрос на поиск стоимости определенного артикула запчасти, стоимость выбирается из четырех прайсов. Немогу понять как сделать так чтобы в этом запросе показывалось только минимальное значение из того прайса в котором оно содержится.
ПРИМЕР

Код: plaintext
1.
2.
3.
4.
Артикул	Наименование	   Прайс1 Праис2 Праис3     Праис4
15208-9F600	фильтр масл		 9.56		
16546-V0100	фильтр возд.     15.58			
22401-20J06	Свеча зажигания				   3.56
11026-01M02	кольцо	          0.56 


Йомайо пример както неполучился :(
...
Рейтинг: 0 / 0
24.01.2005, 15:25:54
    #32880342
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Возможно ли это?
...
Рейтинг: 0 / 0
24.01.2005, 15:30:20
    #32880362
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
С помощью сводных запросов/форм такие задачи решаются просто и естетственно.

Но для этого данные должны быть правильно нормализованы, т.е. должна быть общая таблица/запрос на все прайсы с полем номер_прайса.
...
Рейтинг: 0 / 0
24.01.2005, 15:32:19
    #32880368
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
А как хранятся прайсы? в одной таблице или нескольких?


P.S. Сделать всё равно можно, независимо от ответа на вопрос
...
Рейтинг: 0 / 0
24.01.2005, 15:38:34
    #32880401
AndrewNico
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Если твой пример=таблица с исходными данными, т.е.

Таблица:
Код: plaintext
1.
2.
ID	Art	             Desc	             P1	P2	P3	P4
 1 	A10023- 4057 	Супер деталь	 100 	 120 	 90 	 30 

То запрос, типа этого:

Код: plaintext
1.
2.
SELECT tblN.ID, tblN.Art, tblN.Desc, IIf(IIf(IIf([P1]>[P2],[P2],[P1])>[P3],[P3],IIf([P1]>[P2],[P2],[P1]))>[P4],[P4],IIf(IIf([P1]>[P2],[P2],[P1])>[P3],[P3],IIf([P1]>[P2],[P2],[P1]))) AS P
FROM tblN

Но вообще, это гимморой. Если добавится прайсов, замучаешься формулу править. Так что лучше, для начала, переделать источники данных.
...
Рейтинг: 0 / 0
24.01.2005, 15:39:43
    #32880406
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Геморрой именно из-за ненормализованности данных. Преодоление самим собой поставленных трудностей. :)
...
Рейтинг: 0 / 0
24.01.2005, 15:44:00
    #32880425
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
А как пятый прайс будем добавлять? А как временно исключить какой либо прайс из рассмотрения?
...
Рейтинг: 0 / 0
24.01.2005, 15:48:33
    #32880436
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Alexey ShА как хранятся прайсы? в одной таблице или нескольких?


P.S. Сделать всё равно можно, независимо от ответа на вопрос
Прайсы хранятся в отдельных таблицах. Возможно скоро появится еще одна таблица а в ней будет еще 3 прайса (т,е цены с разными коэффициентами в разных столбцах)
...
Рейтинг: 0 / 0
24.01.2005, 15:49:13
    #32880439
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
AndrewNicoЕсли твой пример=таблица с исходными данными, т.е.

Таблица:
Код: plaintext
1.
2.
ID	Art	             Desc	             P1	P2	P3	P4
 1 	A10023- 4057 	Супер деталь	 100 	 120 	 90 	 30 

То запрос, типа этого:

Код: plaintext
1.
2.
SELECT tblN.ID, tblN.Art, tblN.Desc, IIf(IIf(IIf([P1]>[P2],[P2],[P1])>[P3],[P3],IIf([P1]>[P2],[P2],[P1]))>[P4],[P4],IIf(IIf([P1]>[P2],[P2],[P1])>[P3],[P3],IIf([P1]>[P2],[P2],[P1]))) AS P
FROM tblN

Но вообще, это гимморой. Если добавится прайсов, замучаешься формулу править. Так что лучше, для начала, переделать источники данных.

Сейчас попробую. А насчет геморроя....это лучше чем вообще ничего ;)
...
Рейтинг: 0 / 0
24.01.2005, 16:10:16
    #32880510
AndrewNico
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
S.W.I.N.EСейчас попробую. А насчет геморроя....это лучше чем вообще ничего ;)

А чтобы, без геморроя - сделай так:

Таблица (лучше разбить на несколько, фирмы отдельно, но это ты уже сам):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ID_PriceEntry	CodeOfProduct	Price	PriceID
 1 	A123456	 100 ,00р.	Фирма1
 2 	A123456	 120 ,00р.	Фирма2
 3 	A123456	 130 ,00р.	Фирма3
 4 	A123456	 140 ,00р.	Фирма4
 5 	A123	 10 ,00р.	Фирма4
 6 	A123	 15 ,00р.	Фирма2
 7 	A123	 26 ,00р.	Фирма3
 8 	A123	 38 ,00р.	Фирма1

Запрос:

Код: plaintext
1.
2.
3.
SELECT CodeOfProduct, Price, PriceID
FROM tblPriceEntrys AS P 
WHERE Price = (SELECT Min(Price) AS P FROM tblPriceEntrys WHERE CodeOfProduct = P.CodeOfProduct)

А потом, прайсов сколько хочешь, и ничего переделывать не надо.
...
Рейтинг: 0 / 0
24.01.2005, 16:15:13
    #32880524
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Если несколько таблиц, то склеивать лучше не столбцы а строчки

Select PartNo,Partname,Pricex as price From pricetable1
union all
Select PartNo,Partname,Pricey as price From pricetable2
...

а к результату применить SELECT PartNo,Partname,MIN(Price) FROM Query1 GROUP BY PartNo,Partname
...
Рейтинг: 0 / 0
24.01.2005, 16:17:27
    #32880535
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Все предложенные варианты работают, но я наверное нетак выразился. Мне нужно чтобы оставались столбцы с названиями прайсов и минимальные значения оставались в одном из столбцов, т.е. в одном поле будет показываться значение а в остальных будут пустые строки из-за того что они неотвечают условию.
...
Рейтинг: 0 / 0
24.01.2005, 16:18:59
    #32880539
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Из нормально раскузюканных данных можно получить либо запись номер прайса - мин. цена, либо TRANSFORМ'ом искомое, где столбцы будут представлять собой номера прайса. Воторое - нагляднее.
...
Рейтинг: 0 / 0
24.01.2005, 16:54:17
    #32880653
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
Короче, в виде тушки или чучела прайсовые данные лучше представить в виде

PartID - артикул
PriceID - идентификатор прайса
PriceCol - идентификатор колонки
PriceValue - собсно значение
PriceCurrencyID - идентификатор валюты

А из этого можно склеить всё что требуется
...
Рейтинг: 0 / 0
24.01.2005, 16:57:53
    #32880664
AndrewNico
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
S.W.I.N.EВсе предложенные варианты работают, но я наверное нетак выразился. Мне нужно чтобы оставались столбцы с названиями прайсов и минимальные значения оставались в одном из столбцов, т.е. в одном поле будет показываться значение а в остальных будут пустые строки из-за того что они неотвечают условию.

Исходя, из структуры таблицы в моем примере. Запрос получается такой:

Код: plaintext
1.
2.
3.
4.
5.
SELECT L.CodeOfProduct, Sum(L.P1) AS Фирма1, Sum(L.P2) AS Фирма2, Sum(L.P3) AS Фирма3, Sum(L.P4) AS Фирма4
FROM (SELECT T.CodeOfProduct, IIf(T.Price=T.MinPrice And T.PriceID="Фирма1",T.Price,Null) AS P1, IIf([T].[Price]=[T].[MinPrice] And [T].[PriceID]="Фирма2",[T].[Price],Null) AS P2, IIf([T].[Price]=[T].[MinPrice] And [T].[PriceID]="Фирма3",[T].[Price],Null) AS P3, IIf([T].[Price]=[T].[MinPrice] And [T].[PriceID]="Фирма4",[T].[Price],Null) AS P4
FROM (SELECT P.CodeOfProduct, P.Price, (SELECT Min(Price) AS P FROM tblPriceEntrys WHERE CodeOfProduct = P.CodeOfProduct) AS MinPrice, P.PriceID
FROM tblPriceEntrys AS P) AS T) AS L
GROUP BY L.CodeOfProduct

Но это извращение. :))
...
Рейтинг: 0 / 0
27.01.2005, 17:40:38
    #32887763
S.W.I.N.E
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать чтобы в запросе показывались только наименьшие значения
А возможно ли сделать так, чтобы в запросе показывались все данные и цены из всех прайсов, но минимальная цена выделялась другим цветом? (это не я многого хочу, это от меня много хотят
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сделать чтобы в запросе показывались только наименьшие значения / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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