![]() |
Datenbank: Firebird • Version: x • Zugriff über: ??
If-In SQL- aber wie?
Hallo!
Ich hab hier wieder einmal ein Problem. Ich möchte per sql-Statement folgendes machen:
Code:
Wie geht das? Ich weiß das es bei SQL irgendwie auch ein if else gab aber ich weiß nicht wie man das anwendet...
wenn Datensatz mit dem gesuchten Datum vorhanden dann:
Daten des Gefundenen Datensatzes Ändern ansonsten: neuen Datensatz anlegen Gruß Teekeks |
Re: If-In SQL- aber wie?
SQL-Code:
oder
case..when
SQL-Code:
if()
|
Re: If-In SQL- aber wie?
hmmm, wie sieht genau die Syntax aus? Ich werde mich auf jeden Fall mal weiter belesen...
EDIT: *arg* ich stelle gerade fest das ich hier Firebird nehme und nicht wie sonst MySQL... |
Re: If-In SQL- aber wie?
In FireBird:
SQL-Code:
bzw.
select iif( <Feld> = <Wert>; <Code wenn Bedingung war>; <Code, wenn Bedingung nicht wahr>), ... from ...
SQL-Code:
oder
select case <Feld> when <Wert1> then <Code bei Wert1> when <wert2> ... else <Code wenn kein Wert> ...
SQL-Code:
select case when <Bed1> then <Code bei Bed1> when <Bed2> ... else <Code wenn kein Wert> ...
|
Re: If-In SQL- aber wie?
Hmmm, was mach ich hier falsch?:
SQL-Code:
Mir scheint ich habe das Prinzip noch nicht wirklich verstanden...
SELECT iif( Datum=date'17.11.1858';select * From Arbeitszeiten where Datum='17.11.1858'; {ein Update befehl}) from ARBEITSZEITEN
|
Re: If-In SQL- aber wie?
So etwas ginge nur in einer SP oder enem execute block
Mit IIF(), case..when kann man nur Werte wählen/generieren z.B.
SQL-Code:
Select iif( Wert1 > Wert2, Wert1, Wert2) as wert from <Tabelle>;
|
Re: If-In SQL- aber wie?
|
Re: If-In SQL- aber wie?
Hmmm, nu meckert der rum das der "IF" nicht kennt....
Hier mal mein QC:
Delphi-Quellcode:
Der meckert wie gesagt gleich beim If rum :(
with Form1.Query do
begin close; sql.Clear; sql.Add('IF EXISTS(SELECT * FROM Arbeitszeiten WHERE Datum = date'''+dat+''' ) THEN'+#10+ 'UPDATE'+#10+ 'Arbeitszeiten'+#10+ 'SET'+#10); case Combobox1.ItemIndex of 0: sql.add(' B1 = '+inttostr(CBBeginn.ItemIndex)+#10+ ' E1 = '+inttostr(CBEnde.ItemIndex)+#10); 1: sql.add(' B2 = '+inttostr(CBBeginn.ItemIndex)+#10+ ' E2 = '+inttostr(CBEnde.ItemIndex)+#10); 2: sql.add(' B3 = '+inttostr(CBBeginn.ItemIndex)+#10+ ' E3 = '+inttostr(CBEnde.ItemIndex)+#10); 3: sql.add(' B4 = '+inttostr(CBBeginn.ItemIndex)+#10+ ' E4 = '+inttostr(CBEnde.ItemIndex)+#10); 4: sql.add(' B5 = '+inttostr(CBBeginn.ItemIndex)+#10+ ' E5 = '+inttostr(CBEnde.ItemIndex)+#10); end; sql.add('WHERE'+#10+ 'Datum = date'''+dat+''';'+#10+ 'ELSE'+#10+ 'INSERT INTO Arbeitszeiten'+#10+ '(B1,B2,b3,b4,b5,e1,e2,e3,e4,e5)'+#10+ 'VALUES'+#10+ '(:b1,:b2,:b3,:b4,:b5,:e1,:e2,:e3,:e4,:e5);'+#10+ ');'); with Params do begin ParamByName('b1').AsInteger:=0; ParamByName('e1').AsInteger:=0; ParamByName('b2').AsInteger:=0; ParamByName('e2').AsInteger:=0; ParamByName('b3').AsInteger:=0; ParamByName('e3').AsInteger:=0; ParamByName('b4').AsInteger:=0; ParamByName('e4').AsInteger:=0; ParamByName('b5').AsInteger:=0; ParamByName('e5').AsInteger:=0; case Combobox1.ItemIndex of 0: begin ParamByName('b1').AsInteger:=CBBeginn.ItemIndex*5+1; ParamByName('e1').AsInteger:=CBEnde.ItemIndex*5+1; end; 1: begin ParamByName('b2').AsInteger:=CBBeginn.ItemIndex*5+1; ParamByName('e2').AsInteger:=CBEnde.ItemIndex*5+1; end; 2: begin ParamByName('b3').AsInteger:=CBBeginn.ItemIndex*5+1; ParamByName('e3').AsInteger:=CBEnde.ItemIndex*5+1; end; 3: begin ParamByName('b4').AsInteger:=CBBeginn.ItemIndex*5+1; ParamByName('e4').AsInteger:=CBEnde.ItemIndex*5+1; end; 4: begin ParamByName('b5').AsInteger:=CBBeginn.ItemIndex*5+1; ParamByName('e5').AsInteger:=CBEnde.ItemIndex*5+1; end; end; end; execsql; Form1.SQLTransaction1.Commit; end; Woran kann das liegen? |
Re: If-In SQL- aber wie?
Du hast den Link aber bis zum Ende gelesen? :mrgreen:
|
Re: If-In SQL- aber wie?
schon, aber es müsste doch auch so gehen (es wurde ja nur geschrieben das dies nicht so schön ist und auf Schönheit kommt es bei mir nicht an :) ) oder hab ich noch was übersehen (mein Englisch ist ja nicht wirklich soo gut )? :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz