MySQL: Colonne Calculée
Je suis juste commencé à l'aide de SQL et a couru dans un problème.
Dans ma base de données, j'ai actuellement deux tables, des Cinémas et des Théâtres.
Je suis en train de créer une colonne "# de salles# dans les Cinémas de la table qui compte le nombre de Théâtres dans les salles de table avec la même CinemaID (clé étrangère) comme une salle de Cinéma dans les Cinémas de la table. Je l'ai eu à travailler comme une requête SQL:
SELECT cinemas.CinemaID,Town,COUNT(*) AS '# of Theatres'
FROM cinemax.cinemas,cinemax.theatres
WHERE cinemas.CinemaID=theatres.CinemaID
GROUP BY cinemas.CinemaID;
Mais je voulais savoir si il est possible de créer une colonne dans les Cinémas de la table, qui effectue automatiquement la requête ci-dessus et insère la valeur dans chaque ligne.
Il va être une très petite base de données, donc la vitesse n'est pas vraiment un problème, je veux juste savoir comment faire une telle colonne calculée (si possible).
il suffit d'utiliser un mysql vue homme!
OriginalL'auteur Matt | 2011-03-24
Vous devez vous connecter pour publier un commentaire.
c'est possible. mais vous ne devriez pas le faire.
qui est appelé la dénormalisation et n'est généralement pas une bonne idée.
parfois, cependant, vous ne devez absolument les éliminer quelque chose pour une raison étrange, (votre exemple est loin d'être une bonne raison). dans ces cas, vous devez ajouter du code du déclencheur pour gérer automatiquement les valeurs chaque fois que quelque chose change dans le système qui aurait une incidence sur les résultats.
mariadb.com/kb/en/mariadb/virtual-computed-columns
OriginalL'auteur Randy
Une colonne calculée signifie normalement une valeur, vous pouvez calculer par ligne. MySQL ne supporte pas cela, mais SQL Server. Par exemple, pour stocker la somme de deux colonnes en permanence:
Cependant, vous êtes à la recherche de stocker un agrégat, c'est-à-dire, une valeur pour un groupe de lignes. MySQL et SQL Server ne prennent pas en charge les vues matérialisées avec un agrégat, mais Oracle n':
Avec MySQL cependant, le plus proche que vous pouvez faire est une tâche cron qui périodiquement remplit un tableau:
Vous pouvez faire une requête de la table comme une vue matérialisée; il sera aussi rapide, mais de ne pas être à jour.
OriginalL'auteur Andomar
Dans mysql si vous voulez une colonne réelle vous
OriginalL'auteur Unreason
MySql prend en charge générées dans les colonnes de 5,7
OriginalL'auteur Jim Sosa