Wie kann ich eine Spalte in einer MySQL-Datenbank eine Funktion von anderen Spalten sein?

StackOverflow https://stackoverflow.com/questions/1225197

  •  22-07-2019
  •  | 
  •  

Frage

Ich arbeite mit einer Datenbank, die hält, wo ein Leser in einem Buch. Ich tue dies durch eine Seitenanzahl Spalte und eine aktuelle Seite Spalte.

Gibt es eine Möglichkeit, eine Spalte ‚Fortschritt‘ hinzuzufügen, die gleich (current / pagecount) sein?

War es hilfreich?

Lösung

Sie haben zwei Möglichkeiten. Sie können entweder das Feld auf SELECT erstellen:

SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books;

oder ein VIEW erstellen, mit dem Sie es, ohne explizit den Betrieb abfragen kann unter Angabe:

CREATE VIEW user_books_progress AS
  (SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books);

Dann können Sie einfach Ihre Ansicht als eine normale Tabelle abfragen:

SELECT book_id, user_id, progress FROM user_books_progress;

Weitere Informationen über Arithmetische Operatoren und Ansichten sind in der Dokumentation zur Verfügung:

  

11.5.1: Arithmetische Operatoren < br>    12.1.12. CREATE VIEW-Syntax

Andere Tipps

Sie können nicht eine Spalte eine Funktion definieren. Es gibt mindestens zwei Abhilfen für diese:

  • Aktualisieren Sie Ihre Fortschritte Spalte einen BEFORE UPDATE-Trigger verwenden, müssen Sie einen benötigen für BEFORE und INSERT.
  • Verwenden Sie eine Ansicht, die den Fortschritt Spalte für Sie berechnet.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top