# Sql Statement



## Fastlane (13. Jun 2012)

Guten Tag, 

bin gerade auf ein Problem in meinem sql statement gestoßen. Ich hab eine Datenbank wo ich die Anzahl bestimmter Einträge zählen möchte. Dazu mein Statement:

("Select count * from table1 where Zahl > '9'");

Das funktioniert nicht irgendwie. Tausche ich das > mit einem = aus dann geht es. Kann mir jemand diesbezüglich weiterhelfen? Vielen Dank


----------



## X5-599 (13. Jun 2012)

Probiers mal mit: "Select count(*) from table1 where Zahl > '9'"


----------



## SlaterB (13. Jun 2012)

die Anführungszeichen können auch weg


----------



## Fastlane (13. Jun 2012)

So jetzt sitz ich am PC vorort. 

Das ist der aktuelle Select, welcher nicht funktioniert:

```
("Select  count (*) from Tabelle1 where XY > '9'")
```

ich habe auch noch einen zweiten Select mit istgleich, welcher einwandfrei Funktioniert:

"Select  count(*) from Tabelle1 where XY = '9'"


Nun zu euren Meinungen: also die Anführungszeichen sind anscheinend ein muss. Entferne ich die Anführungszeichen, so geht er mir in die Exception.
Beispielsweise so: "Select  count(*) from Tabelle1 where XY = 9"

also ich denke das ' muss dort sein.

Das Komische ist, wenn ich kleiner als einfüge, gibt er mir die komplette Anzahl der Datensätze in der Datenbank."Select  count(*) from Tabelle1 where XY < '9'"


Hier mal der ganze Codeschnipsel zu meinen Problem:


```
try{
            java.sql.Statement t9 = conn.createStatement();
            java.sql.ResultSet a9 = t9.executeQuery("Select  count (*) from Tabelle1 where DauerGesamt > '9'");
            while (a9.next()) {
                String strü9T = a9.getString(1);
               jTable1.getModel().setValueAt(new Integer(strü9T),0,10);
           }
           }catch (Exception e){      
                JOptionPane.showMessageDialog(null, "Anzeigefehler Gesamtdauer 9");
        
           }
```

Vielen Dank


----------



## X5-599 (13. Jun 2012)

Sicher, dass "DauerGesamt" ein integer Feld in der Datenbank ist? Klingt für mich so als wärs character varying oder so ...


----------



## diel2001 (13. Jun 2012)

Kann es sein das "DauerGesamt" ein Varchar statt ein Nummernfeld ist in der Datenbank ?


----------



## Fastlane (13. Jun 2012)

Öh,...

Das Format müsste ein String sein:


```
int zahl1g;
        zahl1g=integerZahlg;
 
        int zahl2g;
        zahl2g=integerZahl1g;
 
        int ergebnisg;
        ergebnisg=zahl1g-zahl2g;//Berechnen

      String stg;
      int fg = ergebnisg;
      stg = ""+fg;
      
      txtGD.setText(stg);
```

D. H. in Obengenannten Text berechne ich die Differenz zweier Zahlen und wandle das Ergebnis in einen String um. 

Von diesem Textfeld aus wird das in die Datenbank gespeichert.


----------



## tfa (13. Jun 2012)

> die Differenz zweier Zahlen und wandle das Ergebnis in einen String um.


Und warum? ist eine Zahl nicht besser für diese Zwecke?


----------



## ARadauer (13. Jun 2012)

tja > '9' ist halt fachlich ganz anderes als > 9


----------



## X5-599 (13. Jun 2012)

Also wenn das Feld in der Datenbank wirklich eine Art String ist und das auch so bleiben soll, könnte sowas noch funktionieren:

Select  count (*) from Tabelle1 where CAST(XY As integer) > 9

Ich hab allerdings keine Ahnung, ob das Datenbankabhängig ist. Auch dürfen dann in XY keine Strings stehen die nicht in einen Integer gecastet werden können! Also nur welche, die wirklich Zahlen darstellen.


----------



## Fastlane (13. Jun 2012)

```
Select count (*) from Tabelle1 where CAST(XY As integer) > 9
```

Funktioniert leider net.
Wie soll ich dann den Integer in ein swing textfeld setzen??Das Fordert doch schon von Grund auf einen String. Leider ist das Textfeld wichtig und kann nicht umgangen werden. 

Gibt es denn kein sql stmt, welches das mit dem > hinbekommt?


----------



## SlaterB (13. Jun 2012)

im Moment der Anzeige kannst du jederzeit einen Int, Date oder beliebige sonstige Daten in Text umwandeln,
deswegen im Datenmodell alles als String vorzuhalten wäre ja irre,
speichere dort Zahlen, die wie hier z.B. Vergleiche gut unterstützen, fürs Textfeld verwende String.valueOf(zahl)


----------



## X5-599 (14. Jun 2012)

@SlaterB
Sehe ich auch so.

@Fastlane
Funktioniert der SQL Befehl nicht, oder ist das Problem die Umwandlung des zurückgegebenen Integers in einen String. Letzteres hätte SlaterB nämlich schon erklärt.


----------

