- One mobilszolgáltatások
- Samsung Galaxy A54 - türelemjáték
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- Poco X6 Pro - ötös alá
- Xiaomi 14T - nem baj, hogy nem Pro
- Okosóra és okoskiegészítő topik
- iPhone topik
- Samsung Galaxy XCover7 Pro - burokban született One UI
- Fotók, videók mobillal
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
Új hozzászólás Aktív témák
-
-
Mike
veterán
éppen most ért el engem is az a kérdés, hogy updatelek valamit, ha a subquery több soros
a stacken sem találtam egyszerű megoldást, szerencsére van korábban megírt sql query gyűjteményem, és abban találtam az IN-t (hülyülök el, tudom)UPDATE vmi
SET
a = 1
WHERE id IN
(SELECT id...
-
nyunyu
félisten
Van ilyen update szintaxis? *
Szerettek veszélyesen élni.Én inkább szabvány merge-et írnék:
MERGE INTO Tabla t
USING (SELECT ceg, adoszam, datum,
ROW_NUMBER() OVER (PARTITION BY ceg ORDER BY datum DESC) rnum
FROM Tabla) x
ON (t.ceg = x.ceg
AND t.adoszam = x.adoszam
AND t.datum = x.datum)
WHEN MATCHED THEN
UPDATE SET t.Rel = CASE WHEN x.rnum = 1 THEN 1 ELSE 0 END;(Gondolom a régebbi adószámokat egyúttal rel=0-ra kell állítani.)
* Ja tényleg, SQL Server 2008 környékén próbálták elcsaklizni a Teradata ügyfeleit, aztán emiatt implementálták a Teradata tuningolt update szintaxisát a FROM clause-zal.
-
-
Fejből példa. Legyenek a bal oszlopban a megrendelés fejek, a jobb oszlopban pedig a pozíciók.
Kulcs:
- OrderNr
Bal oszlop:
- OrderNr
- Date
Jobb oszlop:
- OrderNr
- Part
- Qty
Ezeket kell lekérdezni, és akkor LineNr legyen a pozíció száma, ami nyilván OrderNr-enként újra kezdődik. -
pch
senior tag
Ez az update nem azt csinálja. Lehet félreérthető voltam.
Szóval az information mezőbe valahol van az ean kód. Ezt akarom átrakni egy ean mezőbe.
Ugye a regxp azt csinálja, hogy megnézi a szövegben azt a részt ahol egymás után 13 szám van. Azaz a bemenő szövegből az ean marad (Jó esetben). Ezt meg az update-nél fel tudom már használni. -
nyunyu
félisten
CTAS az emlékeim szerint szabványos szintaxis, mennie kéne nem Oracle DBken is.
Ha a SELECT után nem * áll, akkor csak a hivatkozott oszlopok fognak bekerülni az új táblába az eredeti adattípussal.
* esetén minden oszlop másolódik.Viszont arra figyelni kell, hogy a másolat táblán csak a mezők típusai fognak másolódni.
Constraintek (primary key, foreign key..), indexek NEM, azokat neked kell kézzel létrehozni, figyelve arra, hogy ezek nevei nem egyezhetnek az eredeti táblán használt constraintek, indexek neveivel!CTAS végére írt WHERE mögé írt feltétellel tudod megadni, hogy melyik sorokat másolja át az eredeti táblából.
Ha nincs WHERE, akkor mindent másol, de ha pl. WHERE 1=2;-t írsz, akkor csak a táblaszerkezet fog létrejönni, adatok nélkül. -
evko
aktív tag
Köszönöm a tippeket.
Most tanulmányozom az SQL injection "rejtelmeit", jó tudni erről is. Sajnos hirtelen ez a videó jött fel, alatta nem olvastam rém történeteket, de legalább tudom, nagyon figyelni kell.Neked is felteszem a kérdést... Tudnál nekem esetleg valami linket küldeni, ahol net.asp-ben normálisan meg van oldva egy insert, update, vagy bármi parancs?
Jó éjt!
-
Apollo17hu
őstag
-
Taci
addikt
Köszönöm a tanácsot.
Igazából már azt gondoltam, készen vagyok, mehet élesben a weblap (és vele az adatbázis), csak eszembe jutott, megnézem, hogyan viselkedik majd x év adatfelhalmozódása után. És mint kiderült, nem jól...
Szóval tényleg át kell alakítanom, mert így nem lesz jó hosszú távon, és most még bármit csinálhatok vele, bárhogy alakíthatom, mert még csak tesztfázisban van (bár már 1-2 hét múlva küldtem volna bevetésre). Viszont igazad van, ennek tényleg újra neki kell ülni. De sajnos úgy látszik, egyedül én ehhez kevés vagyok. (Így is csodálom, hogy saját erőből (plusz a Ti segítségetek itt, plusz Stackoverflow, plusz W3Schools stb.) fel tudtam ezt építeni, elég sok ez (HTML, CSS, JS, PHP, SQL) egy embernek (nekem legalábbis), úgy, hogy még működjön is).
Szóval talán segítséget kellene kérnem (fizetőst, egy hozzáértőt pár óra szaktanácsadásra), hogy az alapok stabilak legyenek.
Mert hát ahogy írtad is, ilyen csepegtetett infókból nem fog összeállni a kép, és amúgy sem veletek akarnám megoldatni a felmerült problémákat.Ha esetleg tudtok ilyen szolgáltatást, akár itt, akár privátban jelezzétek, kérlek. (Elképzelésem szerint) óradíjban, megmutatom, hogy működik az oldal, ezt hogyan szolgálja ki jelenleg az adatbázis, ő pedig elmondja, mi és miért nem jó, javítjuk, teszteljük, és örülünk.
Mert logikázhatok én itt egyedül (a Ti segítégetekkel, amit ezúton is köszönök), de ha rossz a logikám, amiből indul az egész, akkor csak az időt húzom a semmire.
Viszont azt amúgy továbbra sem értem, hogy az alap lekérdezéssel miért ilyen piszok lassú, ha egyszer már indexelve is van, és LIKE és kategóriák a közelben sincsenek.
-
nyunyu
félisten
Nem ezt akarod inkább lekérdezni?
with t1t2 as
(select t1.ID, t1.Date1 as Date, t1.Attr1, null as Attr2, t1.valid_from, t1.valid_to
from t1
union
select t2.ID, t2.Date2 as Date, null as Attr1, t2.Attr2 as Attr2, t2.valid_from, t2.valid_to
from t2)
select distinct
akt.id,
akt.date valid_from,
lead(akt.date) over (order by akt.date) valid_to,
ut1.attr1,
ut2.attr2
from t1t2 akt
left join t1t2 ut1
on ut1.id=akt.id
and ut1.valid_from<=akt.date
and ut1.valid_to>akt.date
and ut1.attr2 is null
left join t1t2 ut2
on ut2.id=akt.id
and ut2.valid_from<=akt.date
and ut2.valid_to>akt.date
and ut2.attr1 is null
order by akt.id, akt.date;Összefűztem a két táblát, majd minden dátumhoz megkeresem az adott pillanatban érvényes Attr1 és Attr2 értékeket, meg a következő változás dátumát.
-
tm5
tag
és egy másik:
select
t1.id
, t1.valid_from as date1
, t2.valid_from as date2
, t1.attr1
, t2.attr2
from t1 left outer join t2 on (
(t1.valid_from >= t2.valid_from and t1.valid_from < t2.valid_to)
)
union
select
t2.id
, t1.valid_from as date1
, t2.valid_from as date2
, t1.attr1
, t2.attr2
from t2 left outer join t1 on (
(t2.valid_from >= t1.valid_from and t2.valid_from < t1.valid_to)
) -
tm5
tag
In case anyone is interested in:
Született egy megoldás, most integrálom a való világba.:with
dt AS
(
select valid_from d from t1
union
select valid_from d from t2
)
select
dt.d
, coalesce(t1.id, t2.id) as id
, t1.valid_from as date1
, t2.valid_from as date2
, t1.attr1
, t2.attr2
from dt
left outer join t1 on (dt.d >= t1.valid_from and dt.d < t1.valid_to)
left outer join t2 on (dt.d >= t2.valid_from and dt.d < t2.valid_to) -
tm5
tag
Csináltam hozzá egy SQL Fiddle -t is. Hátha úgy könnyebb.
-
nyunyu
félisten
-
lenoma
aktív tag
Elküldöm Neked a 2 tesztsort véleményezésre.
A főiskolai tanár 2 hét alatt lenyomott kb 1 szemeszternyi tananyagot.
Itt már a vizsga felkészítésről van só a tanultak alapján.
A tanár jelezte is, hogy ez a teszt Halálos iramban miközben a vizsga 45km/h-val városi közlekedés lesz ami amúgy az 5-ös Junior Rendszerüzemeltető szint helyett 4-es szakmunkásképző Juniur rendszerüzemeltető képzés az állami programozó képzés keretében.
Célom, hogy a sulitól a valós vizsgára felkészítést kérjek és nem egy maximalista tanár elvárásait.
Amúgy a képzés után lehet szakosodni és ott két hónapig egy tárgyat tanulni intenzíven, szerintem annak a kérdésit tolta most elénk, a tanultakból /0-2hét/ oldjuk meg önállóan és adjuk le még ezen a héten. Csak nála volt bukás a szintfelmérőkön /kb 50%/a többin szinte mindenki átment.
A többi tárgy simán megy ma írtam 100%-os 3. negyedéves állami szintfelmérőt /SQL nem volt benne/ -
pvt.peter
őstag
Köszi a válaszokat, neked is #4764 Ispy.
A legegyszerűbb megoldás tényleg az lenne, hogy ha külön-külön oszlop lenne létrehozva a C táblában az A és B tábla oszlopaira.
De a trigger is járható út, bár nemtom, hogy performanciában ez okoz-e vmilyen hátrányt.
Mindenesetre köszönöm még egyszer a válaszokat. -
nyunyu
félisten
Talán még ez a legegyszerűbb, de előző főnököm hivatalból rühellte a distinctet, úgyhogy olyat nagyon ritkán használunk.
Szerinte az adathibát javítani kell, nem eltakarni!
(Mostani melóhelyem viszont DWHt örökölt, úgyhogy javíthatatlan adathiba adathiba hátán a default felállás.)
-
mr.nagy
tag
Az eredménynek az kellene, hogy honnan vegyek el 8-at a pozitív értékektől, úgy hogy ne csökkenjen 0 alá az érték az elvétel miatt. A fiddle példánál maradva az eredmény ami kellene:
honnan id: 1, hova id: 2, val 8
honnan id: 6, hova id: 4, val 12
honnan id: 8, hova id: 7, val 4
......Egy kereskedelmi példa: van 20 üzletem, van ahol felesleges készlet van és van ahol hiány. Honnan hova vigyek és mennyit, hogy a hiány megszünjön, de maradjon ott is elég ahonnan elveszek.
-
Szmeby
tag
Értem, és köszönöm a választ. Én is szeretem elszeparálni egymástól a lazán kapcsolódó dolgokat. SRP FTW!
Az mondjuk valóban egy fontos kérdés, hogy mi lehetett a kérdező szándéka. Tök érdekes látni, hogy ennek hiányában két egészen eltérő megoldás is született. Az, hogy nem akarja szemmel verni, mindkét esetben teljesül. De hogy ezután mihez kezd velük... arra lehet, hogy egy harmadik megoldás lesz az ideális.
-
bambano
titán
szerintem ez a megoldás nem a kérdésre ad választ, mert ez csak azt mondja meg, ha két egymásutáni rekordnál rossz a dátum sorrendje, azt nem, hogy két tetszőleges rekordnál is az.
tehát ha van egy id=300, datum='2019-07-30' rekordod, azt a te megoldásod nem találja meg, az enyém igen. a kérdés, hogy a kérdező mit akart kérdezni
-
Louro
őstag
Bár multi, de a smucig fajta. Inkább önerőből oldom meg. A VBA-t és az SQL-t is autodidakta módon tanultam meg. De úgy érzem eljutottam arra a szintre, hogy ezt nem oldom meg önerőből.
Ahogy este olvasgattam, az SQL Server képzések szimpatikusabbnak tűnnek. Persze oda is kell más alapozó ismeret.
Eddig csak bőszen írtam az SQL-eket és próbáltam figyelni a performanciára.
-
Petya25
őstag
Igen ez is megoldható valami külső eszközzel.
Eredetileg egy rakás kis egyedi fájlneves fájlban figyelnek ezek az adatok, csak össze lett mergelve. Visual studióban megnézem hátha tudok valamit alkotni, a fájokat egyesével fel tudom dolgozni, de tömegesen automatikusa nem, legalábbis most. -
martonx
veterán
Sőt igaziból on-the-fly kellene replikálni, az a vicc, hogy az ugyan folyamatosan dolgoztatja a két szervert, viszont folyamatosan alacsony terheléssel.
Ezek a napi 1 megoldások viszont ugyan az éles szerveren kb. semekkora plusz terheléssel nem járnak (nem mintha az on-the-fly replika komoly terheléssel járna), viszont a teszt szerver arra az időre full használhatatlan. -
Louro
őstag
Amire nekünk kell, arra jó a T-1 napi adat. Így is csoda, hogy él a rendszer. Napközben nem nyüstöljük az éles rendszert. Én próbálkozok, hogy nyerjek egy kis erőforrást, mert amikor átvettem, akkor borzasztóan rosszul megírt szkriptek futottak ütemezetten
A következő kérdés lehetne, hogy a változásokat azonosítsuk. A rendszer olyan, hogy frissít több mezőbe szinte folyamatosan. Bár jogos, hogy azzal tudnánk nyerni, de a régi adatok beazonosítása, törlése, majd áttöltése lehet időigényesebb lenne.
-
Louro
őstag
Több 20gb+ tábla is van az átmásolandók között, ami emiatt több órát igényel. Szimplán csak át kell másolni a tábla teljes tartalmát. (Az oka, hogy ne az éles környezetet terheljük elemzési célból, hanem egy másolatot. Egy kartéziánus szorzat és megfektetjük az élest és hamar tartós szabadságra küldenek
. )
Lassúnak nem biztos, hogy lassú, de ha egy kicsit is tudok spórolni, akkor én hajlamos vagyok időt tenni bele. Kicsit kattanásom, hogy ha lehet jobban, akkor miért ne.
Az SQL replikációról megkérdezem a DBA-nkat. Én ezt nem használtam. Ennek is kicsit utánajárok
-
Keem1
veterán
Mekkora az MD5 hash mérete?
Ezt nem értemSimán a normál MD5 16 bájtos mérete, hexában.
Miért nem másolod el egy másik fájlba azokat amit nem akartsz törölni [...]?
Alapvetően az lett volna, hogy nap végén: logs.txt -> logs001.txt, de külső elérés kell a loghoz, ezért (+ a kereshetőség miatt) a DB.Most van egy AI PK, de az a fájlbéli logbejegyzéstől független. Arra is gondoltam, hogy hátha lenne egy int alapú hash algoritmus, de itt is fontos a gyorsaság (az MD5 előállítása minimális erőforrást igényel), a hash-re csak az adatbázisba írás miatt van szükség, a feladat többi szemszögéből irreleváns.
Így néz ki a tábla schema:
CREATE TABLE "logs" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"level" INTEGER,
"tstamp" TEXT,
"message" TEXT,
"location" TEXT,
"userid" TEXT,
"hash" TEXT
);A logfájl mindegyik sora egy határoló string alapján kerül feltördelésre, a log level pedig a megfelelő string indexe lesz (NONE->0, ERROR->1, DEBUG->2, ...).
Egy log sor így néz ki:
DEBUG - 2020-04-05 16:00:04 - No IP change detected, no need to update - [itt az adott namespace.class.method van] - [devicename/userid]
Tranzakcióra nincs esetleg valami (sematikusan) ilyesmi?
IF SELECT ...
INSERT INTO ...
ENDIF -
zolynet
veterán
-
bambano
titán
kösz mindkettőtöknek, de nekem ez egy kicsit bonyolult
én a következőkre jutottam: neten talált ötlet, hogy rakjak a számsorra egy rank()-et. lényeg, hogy subselectben kell legyen a számsor, mert a distinct meg a rank postgresben nem fér össze.a szám-rank() az gyakorlatilag megmondja, hogy hány szám maradt ki eddig a sorból. ami azt is jelenti, hogy egy részsorozaton belül a szám-rank() konstans. vagyis kezelhető group by-jal.
select min(number),max(number),count(*) from (
select number,number-rank() over (order by number) as ranked from (
select distinct number as number from item order by 1) as w
) as q group by ranked order by 1;a legbelső selectből kitöröltem a nem publikus részt.
-
-
-
kem
addikt
Leteszteltem az elobb, es kis modositassal mukodik. 1-nel tobb szamjeggyel is, ami nekem fontos. Itt egy masik pelda, amiben nem sok elteres van, szoval elvileg erre at tudom irni.
< <boolean>false</boolean>, 152312 >
< <boolean>true</boolean>, 176 >
< <s>false</s>, 271636 >
< <s>true</s>, 1338 >Itt ugye csak annyi valtozik, hogy az int-bol boolean lesz, tehat:
update subscription_attribute sa
set sa.VALUE = '<boolean>'||SUBSTR(sa.VALUE,4,LENGTH(sa.VALUE)-7)||'</boolean>'
...
where sa.VALUE LIKE '<s>%</s>'Viszont ha megforditjuk a helyzetet, es boolean-bol kell mast csinalni, akkor mar a szamokat is at kell irni a SUBSTR utan. Ezt a reszt nem tudtam ertelmezni, csak kapisgalom:
SUBSTR(column_value,4,LENGTH(sa.VALUE)-7)
A column_value helyett sa.VALUE-val mukodik, a 4-es gondolom az elso karakter amit megovunk, de azt ami utana van nem ertem. -
Apollo17hu
őstag
Szia!
Meg fogom nézni, hogy van-e lehetőség ilyen formára átírni. Igazából a két allekérdezésre úgy tekintettem, mintha logikailag "különállóak" lennének. Eddig úgy gondoltam, hogy a kód futása külön-külön megy végbe allekérdezéseken belül, és csak ezt követi a részeredmények összekapcsolása. Szándékosan így is írtam a legtöbb kódot, beszédes alias-t adva az allekérdezéseknek, hogy pl. hibakereséskor könnyebben értelmezhesse akár egy olyan személy is, aki először találkozik vele. Ezek szerint nagyon nem így működik...
-
tvse1995
senior tag
-
Novics
senior tag
Tényleg csak ennyi hiányzik. Ezt én is észrevehettem volna.
Viszont most meg azon akad ki, hogy nincsen definiálva ez a függvény. Sajnos egész héten rendezvények vannak, és most nincsen túl sok időm ezzel foglalkozni, ettől függetlenül hálás vagyok minden segítségért. Még csak most ismerkedek komolyabban az SQL-lel, ez gondolom egyből látszott a kérdéseimen.
Ez egy dolgozói nyilvántartás, amiből jogszabálynak megfelelő adattartalommal jelentéseket kell generálnom. Az egyik kötelező adat a közalk. jogviszony kezdete. Ha a usernek volt olyan korábbi jogviszonya, ami beszámít a közalkalmazottiba, akkor annak a kezdődátuma kell, ezek közül természetesen a legkorábbi. (min(kmh.kezdete) where beszam = yes) Ha pedig nem volt ilyen jogviszonya - mert vannak olyanok, akiknek ez az első munkahelye, vagy nem beszámítható egyik korábbi sem -, akkor pedig az itteni jogviszony kezdődátuma kell. (szemad.jogvisz_kezd) Vissza kell kapnom mind a 238 dolgozót, viszont mindegyiket csak egyszer. Elég csak egy olyan tábla, ahol a név és a dátum szerepel, azt már be tudom rakni a jelentésbe. Ami maga szintén elég baltával faragott, biztosan van elegánsabb megoldás, de egyelőre működik, a csinosítás ráér.
Még mindig jöhetnek könyv, weboldal tippek, amin el lehet indulni felfedezni az SQL rejtelmeit.
-
Novics
senior tag
Az NVL-nél valahogyan meg kellene adni, hogy az ahhoz az emberhez tartozó jogvisz_kezd-et adja meg, akinél nincsen kmh.kezdete. Most eldobja magát, hiányzó művelet miatt. De itt ugyanúgy elakadok, hogy hogyan tudnám ezt megmondani.
bambano Még csak nem is hallottam róla - ez nem teljesen igaz, mert valahol láttam már, de nem néztem még meg -, de ez működik.
Már csak az a gond, hogy akinek mind a két táblában van valid értéke, az kétszer szerepel. Sajnos allekérdezésbe nem lehet berakni, pedig próbáltam.
Tehát vagy az kellene megmondani, hogy a 2 táblából a kisebb értéket hozza ki, vagy pedig a kmh-s értéket, ha az valid, mivel az minden esetben kisebb. -
lordring
aktív tag
Mivel nem tanultam SQL-t, így valamit tuti nem tisztán értek. Így fest most a lekérdezés:
SELECT T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],T2.[CardName], T0.[ShipDate], T1.[CardCode] FROM CSI1 T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode WHERE T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
SELECT sum(T0.LineTotal)
Erre a "The multi-part identifier "T0.LineTotal" could not be bound" hibát kapom.
-
lordring
aktív tag
Lehet, hogy rosszul fogalmaztam.
A lekérdezés eredménye egy táblázat, ahol soronként vannak a rekordok, mindegyikben szerepel egy T0.[LineTotal] érték. A végén ezen értékeket szeretném összegezni, tehát vmi SUM(T0.LineTotal) alakú függvény lenne, de erre az Incorrect Syntax hibaüzenetet kapom.
-
bambano
titán
-
updog
őstag
"Valójában nem értem, hogy niért lenne rá szükség" A válasz (nem) meglepő: mert azt mondták
Komolyra fordítva: a projekt megköveteli, hogy igazoljuk, hogy az átvitel során az adatok nem változnak. Mivel van közte pár finomság (spéci MS típusok alfanumerikus és LOB szinten is), amik nincsenek konkrétan Oracleben, implicit konverzió is történik, ahol ha jól értem, nem garantált a konzisztencia (nyilván 99.99%-ban megoldja a driver, és random beleselectálva ezt is látjuk, de ha MS lennék, én se írnám le sehova hogy 100%.
+ugye példa nem bizonyít
A biznisznek meg egy dokumentáció kell, ahol le van írva hogy 100%.
-
updog
őstag
Igen, köszi, őrá én is ráakadtam, épp várom hogy a kolléga tesztelje a túloldalt (ebbe se menjünk bele, hogy miért így van
)
De az MSDN-n amit találtam doksit, aszerint nem biztos hogy ez kell nekem. Az Oracle SELECT-et eszik, és a teljes resultset hash-ét dobja vissza, ez nem úgy tűnik. Persze még azt is tesztelem, hogy pl. mi van a LOB oszlopokkal, null-okkal, ilyesmi.
Új hozzászólás Aktív témák
Hirdetés
- Eladó Garanciális Thrustmaster T248 kormány és pedál + TH8S váltó + kamion váltógomb
- BESZÁMÍTÁS! Gigabyte B450 R7 5700X 32GB DDR4 512GB SSD RX 6700XT 12GB Rampage SHIVA be quiet! 650W
- BESZÁMÍTÁS! Gigabyte GA-A620M R5 7600 32GB DDR5 512GB SSD RX 6700XT 12GB Rampage SHIVA Corsair 750W
- BESZÁMÍTÁS! Asus A520 R5 3600 16GB DDR4 500GB SSD RTX 2060 8GB Rampage SHIVA CoolerMaster 700W
- BESZÁMÍTÁS! MSI B550 7 5800X 16GB DDR4 512GB SSD RTX 3070 8GB Rampage SHIVA Enermax 750W
- Bomba ár! HP ZBook Studio G5 - XEON I 32GB I 512SSD I Nvidia I 15,6" 4K DreamColor I Cam I W11 I Gar
- 24" Eizo FlexScan EV2146W, 1920X1200 és 22" Eizo FlexScan EV2216W monitorok szépek, talp nélkül
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
- Újszerű HP 250 G10 - 15.6"FHD IPS - i3-1315U - 8GB - 512GB SSD - Win11 - 1,5 garancia - MAGYAR
- HP Rack szerverek és tartozékok egyben vagy külön-külön
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged