TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[MySQL] help , Deus ex machine 16/04/12 10:00 bo się zapętliłem i nie mogę wymyślić prostego sposobu. Potrzebuje wyciagnac cene minimalna PRC w zakresie grup NUM,LNG ale z waznym dowiazaniem ID
mam:
ID NUM LNG PRC CUR
332 100092 en 9000 EUR
420 100092 en 9000 EUR
508 100092 en 9000 EUR
596 100092 en 7200 EUR
1004 100092 es 9000 EUR
1092 100092 es 9000 EUR
1180 100092 es 9000 EUR
1268 100092 es 7457 EUR
i w wyniku mam dostac:
596 100092 en 7200 EUR
1268 100092 es 7457 EUR
to musi być jakieś proste rozwiazanie, ale kurde same komplikacje mi po głowie chodzą."Uti non Abuti" - rozważałeś najprostsze rozwiązanie, mianowicie , Tomasz 16/04/12 12:07
DECLARE @tmp TABLE
(
ID INT
, NUM INT
, LNG CHAR(2)
, PRC INT
, CUR CHAR(3)
)
INSERT INTO @tmp
VALUES
( 332, 100092, 'en', 9000, 'EUR' ),
( 420, 100092, 'en', 9000, 'EUR' ),
( 508, 100092, 'en', 9000, 'EUR' ),
( 596, 100092, 'en', 7200, 'EUR' ),
( 1004, 100092, 'es', 9000, 'EUR' ),
( 1092, 100092, 'es', 9000, 'EUR' ),
( 1180, 100092, 'es', 9000, 'EUR' ),
( 1268, 100092, 'es', 7457, 'EUR' )
SELECT
t2.ID,
ij.[NUM],
ij.[LNG],
ij.[PRC]
FROM
( SELECT
t.NUM
, t.LNG
, MIN(t.PRC) AS PRC
FROM
@tmp AS t
GROUP BY
t.NUM
, t.LNG
) AS ij
INNER JOIN @tmp AS t2 ON [ij].[LNG] = [t2].[LNG]
AND [ij].[NUM] = [t2].[NUM]
AND [ij].[PRC] = [t2].[PRC]
Ile masz tych danych?https://www.siepomaga.pl/milosz-mosko - danych, a pare milionów wierszy , Deus ex machine 16/04/12 12:41
to co napisalem jest w duzym uproszczeniu, jeszcze muszę małe pivoty robić w tabeli.
Bo w wierszu mam 4 grupy kolumn z cena (kazda z grup ma cene, typ, walute) - także muszę przed całą zabawą jeszcze wybrać cene minimalną w ramach tego wiersz z jednej z grup o zadanym typie, a dopiero później dostaje normalną tablicę.
A ukulałem coś takiego, działa (napisane w uproszczeniu, żeby się z przykładem łączyło):
CREATE TEMPORARY TABLE EAN_DATA_TEMP AS (
SELECT
`ID`, `NUM`,`LNG`,
{ pivoty `PRC`, `CUR` }
FROM EAN_DATA
where
{$where}
order by `LNG`, `NUM`, `PRC`
);
select EAN_DATA_TEMP.PRC, EAN_DATA_TEMP.CUR ,EAN_DATA.* FROM EAN_DATA_TEMP left join EAN_DATA on EAN_DATA_TEMP.ID = EAN_DATA.ID group by EAN_DATA_TEMP.LNG, EAN_DATA_TEMP.NUM;"Uti non Abuti"
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|