Je génère un rapport en php (mysql),
ex:
`select count(id) as tot_user from user_table
select count(id) as tot_cat from cat_table
select count(id) as tot_course from course_table`
Comme ça, j'ai 12 tables.
Puis-je le faire en une seule requête. Si j'ai fait? Le processus devient lent?
Réponses:
la source
Si vous utilisez des tables MyISAM, le moyen le plus rapide est d'interroger directement les statistiques:
Si vous avez InnoDB, vous devez interroger avec count () car la valeur rapportée dans information_schema.tables est incorrecte.
la source
Vous pouvez certainement utiliser une instruction Select Agregation telle que postulée par Ben James, mais cela se traduira par une vue avec autant de colonnes que vous avez de tables. Une autre méthode peut être la suivante:
La bonne chose à propos d'une approche comme celle-ci est que vous pouvez écrire explicitement les instructions Union et générer une vue ou créer une table temporaire pour contenir des valeurs qui sont ajoutées consécutivement à partir d'un processus en utilisant des variables à la place de vos noms de table. J'ai tendance à aller plus avec ce dernier, mais cela dépend vraiment des préférences personnelles et de l'application. Si vous êtes sûr que les tables ne changeront jamais, vous voulez que les données soient au format d'une seule ligne et vous n'ajouterez pas de tables. s'en tenir à la solution de Ben James. Sinon, je conseillerais la flexibilité, vous pouvez toujours pirater une structure de tabulation croisée.
la source
la source
la source
Je sais que c'est une ancienne pile mais je publierai ce cas de sélection Multi-SQL
la source