seltsame Fehlermeldung in sqlite3

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Cortez: Da wo Du denkst Du musst 0 eintragen wenn der Benutzer keinen Wert angegeben hat, musst Du nicht 0 eintragen sondern `None`. Und daran kannst Du dann beim auslesen auch wieder erkennen, das der Benutzer da keinen Wert eingetragen hat, denn Du bekommst da auch wieder `None` zurück. Der Wert `None` vom Typ `NoneType` wird in Python genau für das gleiche verwendet wie der Wert NULL in SQL. Und nur damit wir nicht wirklich aneinander vorbeireden, NULL ist in SQL ein Wert der genau so geschrieben wird N U L L, das ist nicht die Zahl 0 als Wort und gross geschrieben. NULL ≠ 0.

Ansonsten klingt das mit der Spaltenanzahl komisch. Wenn der Benutzer für einen Datensatz dynamisch viele Werte angeben kann, dann sind das keine Spalten sondern Zeilen, also eigene Datensätze, mit einer Datensatz-ID die kennzeichnet um welchen ursprünglchen Datensatz es sich handelt und einer Spaltennummer, und ggf. noch einer zusätzlichen künstlichen ID wenn man keinen zusammengesetzten Primärschlüssel haben möchte.

Welches konkrete Problem versuchst Du hier eigentlich gerade zu lösen?
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Cortez
User
Beiträge: 115
Registriert: Montag 31. Dezember 2018, 15:28

Ok, danke dir erstmal. Das mit dem none-Wert habe ich, glaube ich, nun ein biss hen Begriffen.

Das Problem ist folgendes: Es geht um eine Tabelle, die Ergebnisse von Sportlern misst. Jeder Datensatz ist sozusagen ein Sportler und jede Spalte ein Versuch. Also wenn ein Sportler z.B. beim Hochsprung an der 1,40 m Marke scheitert, ist der Wettkampf vorbei und er hat keine Versuche mehr. Wenn er aber immer weiter kommt, braucht er auch immer mehr Versuche, eben bis er nicht mehr über die Stange kommt. Und da man im Vorfeld nicbt vorausseheb kann, wer am Ende wieviele Versuche hat, wäre das gut, wenn man das dynamisch machen könnte.

Hoffe, ich habe das ein bisschen verständlich erklären können.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast demnach am besten eine Tabelle mit den Feldern Sportler_ID, Sprugnummer, Höhe, wie es __deets__ schon beschrieben hat.
Cortez
User
Beiträge: 115
Registriert: Montag 31. Dezember 2018, 15:28

Ja, aber es soll ja auch die Anzahl der Versuche und die Höhe von jedem Versuch ermittelbar sein.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

Ist es ja auch. Am besten arbeitest Du erst ein SQL-Tutorial durch, um zu lernen, wie man das dann umsetzt.
Benutzeravatar
sparrow
User
Beiträge: 4537
Registriert: Freitag 17. April 2009, 10:28

Du siehst eine Tabelle in einer relationale Datenbank wie eine Tabelle in einer Tabellenkalkulation.
Nur weil beides gleich heißt, ist es nicht identisch.

Du hast eine Tabelle, die den Sportler repräsentiert.
Eine Tabelle, die die Sportart repräsentiert.
Eine Tabelle, die den Wettkampf repräsentiert.
Eine Tabelle, die die Versuche repräsentiert.

Die Tabelle für die Versuche hat dann in etwa folgende Spalten:
Fremdschlüssel Sportler
Fremdschlüssel Wettkampf
Fremdschlüssel Sportart
Integer versuchsnummer
Double ergebnis

Für jeden Versuch gibt es dann eine Eintrag in die Versuche-Tabelle.

Stichwörter um das Thema zur vertiefen: Relationen in einer Datenbank und Normalisierung.
Cortez
User
Beiträge: 115
Registriert: Montag 31. Dezember 2018, 15:28

Ja, das mit dem SQL-Lite Tutuorial ist vielleicht eine gute Idee. Ich merke gerade, dass ich von der Antwort, die mir sparrow gegeben habe, nur Bahnhof verstehe.
Das Tutorial, das ich auf Youtube durch habe, ist dann scheinbar doch nicht so ausführlich.
Hätte jemand einen Vorschlag für ein gutes Tutorial? (wenn möglich so, dass es auch Normalsterbliche verstehen 😊)
Antworten