CASE utasítás és beágyazott eset az SQL Serverben: T-SQL példa

⚡ Okos összefoglaló

A CASE egy feltételes kifejezés az SQL Serverben, amely az első igaznak kiértékelt feltétel alapján ad vissza egy értéket, egyszerű és keresett alakokat kínálva, valamint beágyazva az IF…ELSE, UPDATE és ORDER BY kifejezésekbe.

  • 🧭 Feltételes érték: Egy CASE kifejezés egy olyan értéket ad vissza, amely attól függ, hogy melyik WHEN feltétel értékelődik ki először igaznak.
  • 1️⃣ Egyszerű eset: Az egyszerű CASE egy kifejezést összehasonlít egy értéklistával, és minden WHEN esetén egyenlőség-ellenőrzést futtat.
  • ???? Keresett ügy: A keresett CASE minden WHEN esetén külön logikai kifejezést értékel ki, támogatva a tartományokat és az egyenlőtlenségi operátorokat.
  • Az ELSE opcionális: Ha nincs WHEN egyezés, és az ELSE értéket sem adjuk meg, a CASE kifejezés NULL értéket ad vissza.
  • 🪆 Fészkelődés: A CASE utasítás beágyazható egy másik CASE utasításba, illetve egy IF…ELSE utasításba a többszintű logika érdekében.
  • 🔧 A SELECT-en túl: A SELECT mellett a CASE az UPDATE és ORDER BY záradékokkal is együttműködik a feltételes frissítések és rendezés végrehajtásához.

CASE utasítás és beágyazott CASE SQL Serverben T-SQL példákkal

A Case áttekintése a való életben!

A való életben ismét a különböző feltételek kimenetelétől függően különböző cselekvéseket hajtunk végre. A további részletekért vegyünk egy példát:

  • Ha a repülőjegy 100 dollárnál kevesebb, akkor Los Angelesbe megyek.
  • Ha a repülőjegyek ára 100 és 200 dollár között van, akkor New Yorkba fogok menni.
  • Ha a repülőjegyek 200 és 400 dollár között vannak, akkor Európába fogok utazni.
  • Egyébként inkább egy közeli turisztikai látványosságot látogatok meg.

Vizsgáljuk meg a feltétel és a cselekvés külön kategorizálását a fenti példától:

Feltételek – Repülőjegyek Csak akkor végrehajtott műveletek, ha a feltétel IGAZ
Less mint 100 dollár Látogasson el Los Angelesbe
100 és 200 dollár között Látogassa meg New Yorkot
200 és 400 dollár között Látogassa meg Európát
A fenti feltételek egyike sem teljesült Közeli turisztikai hely

A fenti példában láthatjuk, hogy a különböző feltételek kimenetele külön cselekvést szabályoz. Például a látogató csak akkor fogja végrehajtani a New York-i látogatás cselekményét, ha a repülőjegy ára 100 és 200 dollár között van. Hasonlóképpen, a MS SQL A CASE utasítás lehetővé teszi különböző T-SQL utasítások végrehajtását is a különböző feltételek kimenetele alapján.

Mi az a CASE nyilatkozat az SQL Serverben?

CASE nyilatkozat be SQL Server a kiterjesztése a HA MÁS utasítás. Az IF…ELSE utasítással ellentétben, ahol maximum egy feltétel engedélyezett, a CASE lehetővé teszi a felhasználó számára, hogy több feltételt alkalmazzon különböző műveletkészletek végrehajtásához MS SQL-ben. A felhasználó által definiált feltételhez társított értéket ad vissza.

Tanuljuk meg, hogyan kell használni a CASE-t SQL és a koncepcióját a következő szakaszokban találod. Az MS SQL-ben kétféle CASE létezik:

  • Egyszerű CASE
  • Keresett CASE

Egyszerű CASE

Az egyszerű eset szintaxisa

CASE <Case_Expression>
     WHEN Value_1 THEN Statement_1
     WHEN Value_2 THEN Statement_2
     .
     .
     WHEN Value_N THEN Statement_N
     [ELSE Statement_Else]   
END AS [ALIAS_NAME]

Itt:

  • A Case_Expression paraméter azt a kifejezést jelöli, amelyet végül összehasonlítunk az Value_1, Value_2 és így tovább értékekkel.
  • Az _1._utasítás, _2._utasítás… paraméterek azokat az utasításokat jelölik, amelyek akkor hajtódnak végre, ha Esetkifejezés = Érték_1, Esetkifejezés = Érték_2, és így tovább.
  • Dióhéjban a feltétel az, hogy Esetkifejezés = Érték_N, és a művelet az N utasítás végrehajtása, ha a fenti eredmény IGAZ.
  • Az ALIAS_NAME opcionális, és az SQL Server CASE utasítás eredményéhez adott aliasnév. Leginkább akkor használjuk, amikor a CASE-t használjuk az SQL Server SELECT záradékában.

Az egyszerű eset szabályai

  • Az egyszerű esetkifejezés csak a Case_Expression egyenlőségvizsgálatát teszi lehetővé Value_1 és Value_N között.
  • A Case_Expression-t egy értékkel hasonlítjuk össze, sorrendben, az első értékkel kezdve, azaz az Érték_1-gyel. Az alábbiakban a végrehajtási megközelítés látható:
  • Ha a Case_Expression ekvivalens az Érték_1 értékkel, akkor a további WHEN…THEN utasítások kimaradnak, és a CASE végrehajtása azonnal VÉGEZÉS.
  • Ha az Esetkifejezés nem egyezik meg az Érték_1 értékével, akkor az Esetkifejezést összehasonlítja az Érték_2 értékével az ekvivalencia szempontjából. Az Esetkifejezés és egy érték összehasonlításának folyamata addig folytatódik, amíg az Esetkifejezés egyező, ekvivalens értéket nem talál az Érték_1, Érték_2 stb. halmazából.
  • Ha semmi sem egyezik, akkor a vezérlés az ELSE utasításra kerül, és a Statement_Else végrehajtásra kerül.
  • Az ELSE nem kötelező.
  • Ha az ELSE nincs jelen, és a Case_Expression egyik értékkel sem egyezik, akkor NULL jelenik meg.

Az alábbi ábra egy egyszerű eset végrehajtási folyamatát szemlélteti:

Folyamatábra, amely bemutatja, hogyan értékeli ki egy egyszerű CASE az egyes WHEN értékeket sorrendben

Példák

Tegyük fel, hogy van egy ' nevű táblánkGuru99' két oszloppal, a Tutorial_ID és a Tutorial_name oszlopokkal, valamint négy sorral, ahogy az alább látható. Ezt fogjuk használni: 'Guru99 lábas asztal a következő példákban.

Minta Guru99 tábla Tutorial_ID és Tutorial_name oszlopokkal és négy sorral

1. lekérdezés: EGYSZERŰ ESET a NINCS MÁS opcióval

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Eredmény: Az alábbi ábra egy EGYSZERŰ ESET végrehajtási folyamatát mutatja be NO ELSE esetén.

Egy egyszerű CASE eredménye ELSE nélkül, amely egy Description minden Tutorial_name-hez

2. lekérdezés: EGYSZERŰ ESET az ELSE opcióval

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Eredmény: Az alábbi ábra egy SIMPLE CASE végrehajtási folyamatát mutatja be ELSE függvény használatával.

Egy egyszerű CASE és ELSE függvény eredménye, amely a nem egyező sorok alapértelmezett szövegét adja vissza.

Keresett CASE

A keresett eset szintaxisa

CASE 
     WHEN <Boolean_Expression_1> THEN Statement_1
     WHEN <Boolean_Expression_2> THEN Statement_2
     .
     .
     WHEN <Boolean_Expression_N> THEN Statement_N
     [ELSE Statement_Else]   
END AS [ALIAS_NAME]

Itt:

  • A Boolean_Expression_1… paraméter azt a kifejezést jelöli, amely IGAZ vagy HAMIS értékre lesz kiértékelve.
  • Az _1._kifejezés_ és _2.__kifejezés… paraméterek azokat az utasításokat jelölik, amelyek akkor hajtódnak végre, ha a megfelelő _1.______ és _2.______ eredménye IGAZ.
  • Dióhéjban a feltétel a Boolean_Expression_1… és a művelet az Statement_N végrehajtása, ha a fenti Boolean_Expression_1 IGAZ.
  • Az ALIAS_NAME opcionális, és a CASE utasítás eredményének adott álnév. Leginkább akkor használjuk, amikor a CASE-t a SELECT záradékban használjuk.

A keresett eset szabályai

  • Az Egyszerű esettel ellentétben a Keresett eset nem korlátozódik csak egyenlőség-ellenőrzésre, hanem logikai kifejezéseket is engedélyez.
  • A logikai kifejezés kiértékelése sorrendben történik, az első logikai kifejezéssel kezdve, azaz a Boole_Kifejezés_1-gyel. Az alábbiakban a végrehajtási megközelítés látható:
  • Ha a Boolean_Expression_1 IGAZ, akkor a további WHEN…THEN utasítások kimaradnak, és a CASE végrehajtása azonnal VÉGET ér.
  • Ha a Boole_Expression_1 HAMIS, akkor a Boole_Expression_2 kiértékelése TRUE feltételt keres. A Boole-kifejezés kiértékelésének folyamata addig folytatódik, amíg az egyik Boole-kifejezés IGAZ értéket nem ad vissza.
  • Ha semmi sem egyezik, akkor a vezérlés az ELSE utasításra kerül, és a Statement_Else végrehajtásra kerül.
  • Az Egyszerű esethez hasonlóan az ELSE a Keresett esetben is opcionális.
  • Ha az ELSE nincs jelen, és egyik logikai kifejezés sem ad vissza IGAZ értéket, akkor NULL érték jelenik meg.

Az alábbi ábra a Keresett eset végrehajtási folyamatát szemlélteti:

Folyamatábra, amely bemutatja, hogyan értékeli ki egy keresett CASE az egyes logikai kifejezéseket sorrendben

Példák

1. lekérdezés: KERESÉS ESET a NINCS MÁS opcióval

SELECT Tutorial_ID, Tutorial_name,
CASE 
 	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Eredmény: Az alábbi ábra a KERESETT ÜGY végrehajtási folyamatát mutatja be NO ELSE esetén.

Egy keresett CASE eredménye ELSE nélkül, amely minden Tutorial_name-hez illeszkedik egy Description

2. lekérdezés: KERESETT ESET az ELSE opcióval

SELECT Tutorial_ID, Tutorial_name,
CASE 
	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Eredmény: Az alábbi ábra a SEARCHED CASE végrehajtási folyamatát mutatja be ELSE utasítással.

Egy ELSE-sel keresett CASE eredménye, amely nem SQL nyelvek esetén alapértelmezett szöveget ad vissza.

Végrehajtási megközelítés közötti különbség: EGYSZERŰ és KERESÉSI ESET

Nézzük meg az alábbi EGYSZERŰ ESETRE vonatkozó példát:

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Itt a „Tutorial_name” a CASE kifejezés része az SQL-ben. Ezután a „Tutorial_name” értéket összehasonlítjuk minden WHEN értékkel, azaz „SQL”-lel… amíg a „Tutorial_name” meg nem egyezik egy WHEN értékkel.

Épp ellenkezőleg, a SEARCH CASE példában nincs CASE kifejezés:

SELECT Tutorial_ID, Tutorial_name,
CASE 
 	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Itt minden WHEN utasításnak saját feltételes logikai kifejezése van. Minden logikai kifejezés, például Tutorial_name = 'SQL'…, IGAZ/HAMIS értékre kerül kiértékelésre, amíg meg nem találja az első olyan logikai kifejezést, amely IGAZ értéket ad vissza.

Az egyszerű és a keresett eset közötti különbség

Egyszerű tok Megkeresett ügy
A CASE kulcsszót közvetlenül a CASE_Expression követi, és a WHEN utasítás elé kerül.

Például:
ÜGY
WHEN Érték_1 THEN utasítás_1…

A CASE kulcsszót a WHEN utasítás követi, és a CASE és a WHEN között nincs kifejezés.

Például:
ESET, AMIKOR AKKOR 1. számú állítás…

Egyszerű esetben minden WHEN utasításhoz tartozik egy VALUE (érték). Ezeket az értékeket (1._érték, 2._érték…) szekvenciálisan összehasonlítja a rendszer egyetlen CASE_Expression-nel. Az eredményt minden WHEN utasításhoz kiértékeli a TRUE/FALSE feltétel szempontjából.

Például:
ÜGY
WHEN Érték_1 THEN utasítás_1…
WHEN Érték_2 THEN utasítás_2…

Egy keresett esetben minden WHEN utasításhoz létezik egy Boole-kifejezés. Ezek a Boole-kifejezések (1._Boole-kifejezés, 2._Boole-kifejezés…) kiértékelik az egyes WHEN utasítások IGAZ/HAMIS feltételét.

Például:
Esetek
AMIKOR AKKOR nyilatkozat_1…
AMIKOR AKKOR nyilatkozat_2…

Egy egyszerű eset csak egyenlőségvizsgálatot támogat, azaz hogy CASE_Expression = VALUE_1, VALUE_2…

Például:
ÜGY AMIKOR Érték_1 AKKOR Utasítás_1…
A fenti példában a rendszer által végrehajtott egyetlen művelet az, hogy ellenőrzi, hogy az Eset_Kifejezés = Érték_1.

A Boolean_Expression_N használatával a Keresett eset (Searched Case) minden olyan műveletet támogat, amely Boole-értéket eredményez. Magában foglalja az egyenlő és a nem egyenlő operátorokat is.

Például:
ESET, AMIKOR AKKOR 1. számú állítás…
A fenti példában a Boolean_Expression_1 tartalmazhatja mind az „egyenlő”, mind a „nem egyenlő” operátorokat, például A = B, A != B.

Beágyazott CASE: CASE az IF ELSE-ben

Az IF…ELSE utasításokon belül használhatjuk a CASE kifejezést. változó a repülőjegyhez és a fiókhoz az értékén. Az alábbiakban egy példa MS-SQL kód látható:

DECLARE @Flight_Ticket int;
SET @Flight_Ticket = 190;
IF @Flight_Ticket > 400
   PRINT 'Visit Nearby Tourist Location';
ELSE 
BEGIN
    SELECT
	CASE 
	WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles'
	WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York'
	WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe'
	END AS Location	
END

A fenti példában a CASE utasítás az IF…ELSE utasításba van beágyazva. Először az IF utasítás hajtódik végre, és ha az SQL Server CASE feltétele hamis, akkor az ELSE utasítás hajtódik végre. Az ELSE rész egy beágyazott CASE utasítást tartalmaz az SQL-ben. A repülőjegy értékétől függően az alábbi eredmények egyike jelenik meg:

  • A rendszer a „Látogasson el a közeli turisztikai helyszínre” szöveget nyomtatja ki, ha a repülőjegyek ára > 400 dollár.
  • A rendszer a „Látogasson el Los Angelesbe” szöveget nyomtatja ki, ha a repülőjegyek ára 0 ÉS 100 dollár KÖZÖTT van.
  • A rendszer a „Visit New York” szöveget nyomtatja ki, ha a repülőjegyek ára 101 ÉS 200 dollár KÖZÖTT van.
  • A rendszer a „Visit Europe” szöveget nyomtatja ki, ha a repülőjegyek ára 201 ÉS 400 dollár KÖZÖTT van.

Az alábbi eredmény azt a helyet mutatja, amelyet a beágyazott CASE függvény az ELSE ágon belüli futtatásakor ad vissza:

Egy IF…ELSE függvénybe ágyazott CASE eredménye, amely kinyomtatja a jegy látogatási helyét

Beágyazott CASE: CASE a CASE belsejében

SQL-ben használhatunk CASE-t egy másik CASE-en belül. Az alábbiakban egy példa MS-SQL kód látható:

DECLARE @Flight_Ticket int;
SET @Flight_Ticket = 250;
SELECT
CASE 
WHEN @Flight_Ticket >= 400 THEN 'Visit Nearby Tourist Location.'
WHEN @Flight_Ticket < 400 THEN 
    	CASE 
		WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles'
		WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York'
		WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe'
		END	
END AS Location

A fenti példában a CASE egy másik CASE utasításba van beágyazva. A rendszer először a külső CASE utasítást hajtja végre; ha a Flight_Ticket < $400, akkor a belső CASE fut le. A visszaadott hely ugyanazokat a jegyártartományokat követi, mint az előző példa, tehát egy 250 dolláros jegy a $201–$400 tartományba esik, és a 'Visit Europe' értéket adja vissza.

Az alábbi eredmény a belső CASE által visszaadott helyet mutatja egy 250 dolláros jegy esetén:

Egy másik CASE-be ágyazott CASE eredménye, amely a Visit Europe függvényt adja vissza egy 250-es jegyért.

CASE UPDATE

Tegyük fel ismét, hogy megvan a 'Guru99 lábas táblázat két oszloppal és négy sorral, ahogy az alább látható:

Guru99-es táblázat az ESETFRISSÍTÉS előtt, amely az eredeti Tutorial_Name értékeket mutatja

A CASE-t használhatjuk az UPDATE funkcióval. Az alábbiakban egy példa az MS-SQL kódra:

UPDATE Guru99
SET Tutorial_Name = 
	(
	CASE
	WHEN Tutorial_Name = 'SQL' THEN 'Structured Query language.'
	WHEN Tutorial_Name = 'PL/SQL' THEN 'Oracle PL/SQL'
	WHEN Tutorial_Name = 'MSSQL' THEN 'Microsoft SQL.'
	WHEN Tutorial_Name = 'Hadoop' THEN 'Apache Hadoop.'
	END
	)

A fenti példában a CASE változót használjuk az UPDATE utasításban. A Tutorial_Name értékétől függően a Tutorial_Name oszlop frissül a THEN utasítás értékével:

  • Ha a Tutorial_Name = 'SQL', akkor frissítse a Tutorial_Name értékét 'Strukturált lekérdezési nyelv' értékre.
  • Ha a Tutorial_Name = 'PL/SQL', akkor frissítse a Tutorial_Name értékét ' értékreOracle PL/SQL.
  • Ha a Tutorial_Name = 'MSSQL', akkor frissítse a Tutorial_Name értékét 'Microsoft SQL.
  • Ha a Tutorial_Name = 'Hadoop', akkor frissítse a Tutorial_Name értéket 'Apache Hadoop'-ra.

Az utasítás futtatása frissíti az egyező sorokat az alábbiak szerint:

A CASE UPDATE utasítás végrehajtásának eredménye a következőn: Guru99 táblázat

Kérdezzük meg a 'Guru99'-es táblázat a frissített értékek ellenőrzéséhez:

Guru99-es táblázat az ESETFRISSÍTÉS után, amely az új Tutorial_Name értékeket mutatja

ESET Rendeléssel

Használhatjuk a CASE-t az ORDER BY-val. Az alábbiakban egy példa MS-SQL kód látható:

Declare @Order Int;
Set @Order = 1
Select * from Guru99 order by 
CASE 
	WHEN @Order = 1 THEN Tutorial_ID
	WHEN @Order = 2 THEN Tutorial_Name
	END
DESC

Itt a CASE-t használjuk az ORDER BY feltétellel. Az @Order értéke 1, és mivel az első WHEN logikai kifejezés TRUE értéket ad ki, a Tutorial_ID van kiválasztva az ORDER BY feltételhez. Az eredmény alább látható:

Az ORDER BY függvény eredménye egy CASE kifejezéssel rendezve a Guru99-es táblázat Tutorial_ID alapján

Érdekes tények!

  • A CASE utasítás beágyazható egy másik CASE utasításba, valamint egy IF…ELSE utasításba is.
  • A SELECT mellett a CASE más SQL záradékokkal is használható, például az UPDATE és az ORDER BY záradékokkal.

GYIK

Az IIF() a két kimenetelű CASE kifejezések rövidítése: egy értéket ad vissza, ha a feltétel igaz, és egy másikat, ha hamis. Egy teljes CASE kifejezés rugalmasabb, és egyetlen utasításban számos WHEN feltételt tesztelhet.

Igen. Mivel a CASE függvény értéket ad vissza, az megjelenhet SELECT listában, WHERE záradékban, HAVING záradékban és GROUP BY utasításban. A WHERE záradékban a CASE függvény lehetővé teszi különböző szűrőlogika alkalmazását a többi oszlopértéktől függően.

Igen. CASE kifejezés elhelyezése a SUM(), COUNT( vagy AVGA () feltételes összesítést végez, azaz csak azokat a sorokat számolja vagy összegzi, amelyek megfelelnek az egyes WHEN feltételeknek. Ezt a technikát gyakran használják pivot stílusú összefoglaló jelentések készítéséhez.

A COALESCE és az ISNULL függvények csak az első nem NULL értéket adják vissza egy listából. A CASE kifejezés tágabb értelemben vett: tetszőleges logikai feltételeket vagy értékegyezéseket értékel ki, és az első igaz ág eredményét adja vissza.

Egy CASE kifejezés egyetlen adattípust ad vissza. Az SQL Server ezt minden THEN és ELSE eredmény adattípus-precedenciája alapján határozza meg, így minden ágnak kompatibilis típusokat kell visszaadnia a konverziós hibák elkerülése érdekében.

Igen. Egy CASE kifejezés megjelenhet egy nézet SELECT utasításában, valamint egy tárolt eljárás, függvény vagy trigger bármely pontján. Ugyanaz a kifejezésszintaxis működik mindezen objektumokon.

Igen. GitHub másodpilóta Egyszerű és keresett CASE kifejezéseket, beleértve a beágyazott CASE és CASE kifejezéseket az UPDATE kifejezésen belül, természetes nyelvi promptból is megrajzolhat. A lekérdezés futtatása előtt mindig tekintse át a WHEN feltételeket, az elágazási sorrendet és az ELSE kezelést.

A mesterséges intelligencia és a gépi tanulást segítő asszisztensek egyszerű angol szabályokat egyszerű vagy keresett CASE kifejezésekké fordítanak, hiányzó WHEN ágakat jeleznek, és átfedést jeleznek.ping vagy elérhetetlen feltételek. A fejlesztő minden javaslatot felülvizsgál a helyesség szempontjából, mielőtt telepítené.

Foglald össze ezt a bejegyzést a következőképpen: