SQL Spalte die nur Werte zwischen 1-6 haben kann?

...komplette Frage anzeigen

5 Antworten

So aus dem Zusammenhang gerissen ist es kaum möglich, die optimale Lösung zu finden. Es muss ja einen Grund geben, warum diese Werte nur zwischen 1 und 6 liegen dürfen. Solche Aufgaben habe ich oft in meinen Anwendungen und es gibt dazu auch interessante Lösungen:

Du kannst z.B. diese 6 Möglichkeiten in einer eigenen Tabelle spezifizieren: Primärschlüssel Wert 1 bis 6, ein zusätzliches Feld für die Bezeichnung dieser Option und ggf. weitere Zusatzangaben dazu. In der Haupttabelle machst den Wert zum Fremdschlüssel auf diese neue Tabelle. Auf diese Weise können in diesem Feld nur Werte zwischen 1 und 6 stehen. Das wird von der Datenbank überwacht. In der Praxis prüft man den Wertebereich per Programm bei der Eingabe. Das ist meist einfacher. Bei einer Eingabemaske kann man auch 6 Radiobuttons vorsehen, die optional gedrückt werden können. Einen Knopf für einen falschen Wert gibt es dann gar nicht. Oder man lässt die Werte in einem kleinen Fenster scrollen, wo nur zugelasssene Werte angezeigt werden.

Übrigens: Für eine entsprechende Abfrage gibt es die SQL-Anweisung BETWEEN.

SELECT * FROM tabelle WHERE wert BETWEEN 1 and 6

Die Datenbank kann das dann mit einem Zugriff erledigen. Die gleiche Bedingung mit > 0 und < 7 erfordert zwei Zugriffe und die anschließende Bildung von Schnittmengen. Ggf. müssen dabei viele Daten durchsucht und zwischengespeichert werden. Bei großen Datenmengen kann das spürbare Auswirkungen auf die Laufzeit haben.

Antwort bewerten Vielen Dank für Deine Bewertung

Du kannst solche Einschränkungen in der Datenbank definieren. Die nennen sich dementsprechend "constraints" Darüber solltest Du Dich in Zusammenhang mit Deinem DBMS informieren.

Antwort bewerten Vielen Dank für Deine Bewertung
Reyha24 15.02.2016, 10:29

Das hier ist bisher die einzige sinnvolle Antwort :)

0

Was du brauchst ist eine Selektion auf die jeweilige Spalte. Selektion geschieht im SQL über WHERE .

Das heißt, du bräuchtest eine Zeile mit WHERE (spaltenname) >= 1 AND (spaltenname) <= 6

Alternativ mit > 0 und < 7 (das ist dir überlassen)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?