diff --git a/engomo/sql.md b/engomo/sql.md new file mode 100644 index 0000000..f20ec13 --- /dev/null +++ b/engomo/sql.md @@ -0,0 +1,45 @@ +# Höchste raumID finden + +```sql +/* +Datasources > SQL-begehung_raume +*/ + +DECLARE @modus_raum NVARCHAR(255) = '$state.modus_raum'; +DECLARE @protokoll_id NVARCHAR(255) = '$state.protokoll_id'; + +IF @modus_raum = 'new' AND @protokoll_id != '' +BEGIN + -- Prüfung, ob Einträge zur übergebenen protokoll_id existieren. + IF EXISTS ( + SELECT 1 + FROM [engomo].[dbo].[begehung_raume] + WHERE [protokoll_id] = @protokoll_id + ) + BEGIN + -- Es existieren Einträge, den höchsten raum_id-Wert ermitteln und um 1 erhöhen + SELECT + ISNULL(MAX(CAST([raum_id] AS INT)), 0) + 1 AS next_raum_id + --'' AS raum_bezeichnung -- Leerer Wert für raum_bezeichnung + FROM + [engomo].[dbo].[begehung_raume] + WHERE + [protokoll_id] = @protokoll_id; + END + ELSE + BEGIN + -- Es existieren keine Einträge, 1 zurückgeben + SELECT + 1 AS next_raum_id + --'' AS raum_bezeichnung -- Leerer Wert für raum_bezeichnung + END +END +ELSE IF @protokoll_id = '' +BEGIN + -- Abfrage ohne protokoll_ID, sortiert nach raum_id absteigend + SELECT + [protokoll_id] + FROM + [engomo].[dbo].[begehung_raume] +END +``` \ No newline at end of file