AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

If-In SQL- aber wie?

Ein Thema von Teekeks · begonnen am 21. Jan 2010 · letzter Beitrag vom 22. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:17
Datenbank: Firebird • Version: x • Zugriff über: ??
Hallo!
Ich hab hier wieder einmal ein Problem.
Ich möchte per sql-Statement folgendes machen:
Code:
wenn Datensatz mit dem gesuchten Datum vorhanden dann:
  Daten des Gefundenen Datensatzes Ändern
ansonsten:
  neuen Datensatz anlegen
Wie geht das? Ich weiß das es bei SQL irgendwie auch ein if else gab aber ich weiß nicht wie man das anwendet...

Gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:18
case..when oder
if()
Markus Kinzler
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#3

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:21
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...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:35
In FireBird:

select iif( <Feld> = <Wert>; <Code wenn Bedingung war>; <Code, wenn Bedingung nicht wahr>), ... from ... bzw.
select case <Feld> when <Wert1> then <Code bei Wert1> when <wert2> ... else <Code wenn kein Wert> ... oder

select case when <Bed1> then <Code bei Bed1> when <Bed2> ... else <Code wenn kein Wert> ...
Markus Kinzler
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#5

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:47
Hmmm, was mach ich hier falsch?:
SELECT iif( Datum=date'17.11.1858';select * From Arbeitszeiten where Datum='17.11.1858'; {ein Update befehl}) from ARBEITSZEITEN Mir scheint ich habe das Prinzip noch nicht wirklich verstanden...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:53
So etwas ginge nur in einer SP oder enem execute block

Mit IIF(), case..when kann man nur Werte wählen/generieren z.B.

Select iif( Wert1 > Wert2, Wert1, Wert2) as wert from <Tabelle>;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#7

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 18:57
http://www.developeando.com/2008/12/...or-insert.html
Robert Wachtel
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 19:47
Hmmm, nu meckert der rum das der "IF" nicht kennt....
Hier mal mein QC:
Delphi-Quellcode:
  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;
Der meckert wie gesagt gleich beim If rum

Woran kann das liegen?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#9

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 19:50
Du hast den Link aber bis zum Ende gelesen?
Robert Wachtel
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#10

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 19:54
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 )?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz