Frage von LCSG4, 55

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

Hallo Liebe Community. Ich habe ein Problem. Ich muss eine Möglichkeit finden eine Spalte zu erstellen die nur Werte zwischen 1-6 haben kann. Ich habe sehr viel Recherchiert und ich komme auf keine Lösung. Ich soll diese Problemlösung schematisch erklären.

MFG LCSG4

Antwort
von wotan38, 13

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
von Mikkey, 37

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.

Kommentar von Reyha24 ,

Das hier ist bisher die einzige sinnvolle Antwort :)

Antwort
von karinili, 34

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
von PROGRAM4FUN, 19

Guck mal hier: http://www.w3schools.com/sql/sql_check.asp

Antwort
von Herb3472, 22

Das funktioniert mit "BETWEEN":

SELECT column_name(s)

FROM table_name

WHERE column_name BETWEEN value1 AND value2;

Zitat aus:

http://www.w3schools.com/sql/sql\_between.asp

Antwort
von deadpool42, 30

hmm...

iwas mit ...where 1 < 'name der spalte' > 6

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten