# berechnetes Feld mssql



## Testi (5. Jan 2012)

Hallo Liebe Gemeine ich habe folgendes Probleme. 

Ich habe einer Tabelle Buchung in die ich ein berechnetes  Feld hinzufügen möchte.
Das Feld soll die Anzahl gebuchter Plätze mal den Ist Preis berechnen und somit den zu bezahlen Betrag erreichen.

Die Tabelle besteht schon also muss ich mit einen alter table Befehl arbeiten.

Momentan sieht mein Befehl so aus 


```
alter table Buchung
add Betrag integer =( Buchung.anzahlplaetze * Preis )
go
```
aber der will nicht 

die Fehler Meldung ist 

Incorrect syntax near '*'.
Habt ihr eine Idee was ich Falsch mache 

Gruß Testi

PS:Ich benutzte einen  mssql server 2008


----------



## SlaterB (5. Jan 2012)

ich behaupte nicht alle mssql-Details zu kennen, aber eine derartiges Feld in SQL formuliert habe ich noch nie gesehen,
kannst du anhand von Beispielen/ Links belegen dass es soetwas gibt?

allgemein in SQL gibt es das glaube ich noch weniger, 
eine Feld hat einen Datentyp und noch Eigenschaften wie NOT NULL, Default-Wert, Schlüsseleigenschaft

dass automatische Berechnungen angestellt werden, ist vielleicht was für Trigger:
Einführung in SQL: Trigger ? Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher
aber eigentlich kein Thema welches man einfach so lernt/ verwendet..


----------



## Testi (5. Jan 2012)

Ein Beispiel habe ich leider nicht aber es müsste doch gehen(irgendwie)
Des Weiteren denke ich das so ein Feld erstellt werden kann auch ohne Trigger.
So ein ein zwei Zeilen ? 

Hat noch jemand eine Idee !


----------



## Marcinek (5. Jan 2012)

In einer DDL kannst du das nicht machen


----------



## mario.nemi78 (6. Jan 2012)

Wie sieht denn genau die Tabelle aus, in die Du das Ergebis einfügen willst?

Außerdem ist Int immer ganzzahlig, der errechnete Betrag auch?


----------



## HoaX (6. Jan 2012)

Tabelle umbenennen und einfach einen View anlegen, dann geht das.


----------



## Evil-Devil (9. Jan 2012)

Testi hat gesagt.:


> ```
> alter table Buchung
> add Betrag integer =( Buchung.anzahlplaetze * Preis )
> go
> ```


Mit Alter Table kannst du lediglich die Tabellendefinition ändern. Wenn du also eine weitere Spalte anfügen willst dann tue dies. Was du aber gerade versuchst ist Logik in eine Tabellenerweiterung zu gießen. Das geht nicht.

Entweder ergänzt du die Tabelle um diese eine zusätzliche Spalte und führst dann entsprechend ein Update auf die Spalte um die Plätze festzuhalten. Sei es manuell oder Trigger oder du erzeugst wie Hoax vorgeschlagen eine View. Letzteres ist effektiv nichts anderes als eine fest hinterlegte SQL Anweisung auf der du weitere Ansichts-Manipulationen vornehmen könntest.


----------



## California (10. Jan 2012)

Die View ist dann dasselbe wie

SELECT Buchung.*, (AnzahlPlaetze * Preis) AS Betrag FROM Buchung

und gibt Dir genau das was Du willst, kann sogar nicht nur ganze Euro...


----------

