Databáze > Firebird a Interbase
Udate tabuľky
Stanislav Hruška:
Chcem jednorazovo prečíslovať byty. Jedná sa o 4 500 záznamov. Rád by som to urobil v DB manažéri, ale neviem ako.
Viem to urobiť v D.
* Spustím "SELECT"
* v cykle prechádzam DataSet
* postupne vykonám UPDATE
--- Kód: ---UPDATE FLATS SET FLATNUMBER = NEWNUMBER Zo SELECT
.
SELECT ... , ... ,
CASE
WHEN SUBSTRING(E.TITLE FROM 1 FOR 3) = 'V02' THEN F.FLATNUMBER + 75
WHEN SUBSTRING(E.TITLE FROM 1 FOR 3) = 'V03' THEN F.FLATNUMBER + 150
WHEN SUBSTRING(E.TITLE FROM 1 FOR 3) = 'V04' THEN F.FLATNUMBER + 225
ELSE F.FLATNUMBER
END AS NEWNUMBER
FROM FLATS F
INNER JOIN ENTRIES E ON F.FKENTRY = E.IDENTRIES
INNER JOIN FOCS FO ON E.FKFOCS = FO.IDFOCS
--- Konec kódu ---
Ak to nepôjde ináč, tak si to jedno tlačidlo hodím na hlavný formulár.
vandrovnik:
V SQL se na to hodí EXECUTE BLOCK
https://firebirdsql.org/file/documentation/chunk/en/refdocs/fblangref40/fblangref40-dml-execblock.html
Jan Fiala:
Muzes primo v Update pouzit CASE a udelat to najednou bez prochazeni.
--- Kód: ---UPDATE F SET FLATNUMBER =
CASE
WHEN SUBSTRING(E.TITLE FROM 1 FOR 3) = 'V02' THEN F.FLATNUMBER + 75
WHEN SUBSTRING(E.TITLE FROM 1 FOR 3) = 'V03' THEN F.FLATNUMBER + 150
WHEN SUBSTRING(E.TITLE FROM 1 FOR 3) = 'V04' THEN F.FLATNUMBER + 225
ELSE F.FLATNUMBER
END
FROM FLATS F
INNER JOIN ENTRIES E ON F.FKENTRY = E.IDENTRIES
INNER JOIN FOCS FO ON E.FKFOCS = FO.IDFOCS
--- Konec kódu ---
vandrovnik:
A tuhle syntaxi Firebird umí?
Stanislav Hruška:
--- Citace: vandrovnik 19-12-2022, 08:54:23 ---A tuhle syntaxi Firebird umí?
--- Konce citace ---
Ja som presvedčený, že nie. Preto som to ani neskúsil. V minulosti som skúsil niečo jednoduchšie a nepochodil som.
Tak som to vyskúšal. Padne to na FROM.
Navigace
[0] Seznam témat
[#] Další strana
Přejít na plnou verzi