Come posso avere una colonna in un database MySQL in funzione di altre colonne?

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

  •  22-07-2019
  •  | 
  •  

Domanda

Sto lavorando con un database che tiene traccia di dove si trova un lettore in un libro. Lo faccio avendo una colonna conteggio pagine e una colonna pagina corrente.

C'è un modo per aggiungere una colonna "progress" che sarebbe uguale a (currentpage / pagecount)?

È stato utile?

Soluzione

Hai due opzioni. Puoi creare quel campo su SELECT :

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

O crea un VISUALIZZA , che ti permetterà di interrogarlo senza dichiarare esplicitamente l'operazione:

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

Quindi puoi semplicemente interrogare la tua vista come una normale tabella:

SELECT book_id, user_id, progress FROM user_books_progress;

Ulteriori informazioni sugli operatori aritmetici e le viste sono disponibili nella documentazione:

  

11.5.1: Operatori aritmetici < br>    12.1.12. CREATE VIEW Sintassi

Altri suggerimenti

Non è possibile definire una colonna come funzione. Ci sono almeno due soluzioni alternative a questo:

  • Aggiorna la colonna dei tuoi progressi utilizzando un trigger PRIMA DI AGGIORNAMENTO, ne avrai bisogno anche per PRIMA DI INSERIRE.
  • Utilizza una vista che calcola la colonna di avanzamento per te.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top