Compter plusieurs colonnes avec group by dans une requête
Je compte les valeurs de plusieurs colonnes comme ceci:
SELECT COUNT(column1),column1 FROM table GROUP BY column1
SELECT COUNT(column2),column2 FROM table GROUP BY column2
SELECT COUNT(column3),column3 FROM table GROUP BY column3
Cela renvoie par exemple pour colonne1 array(attr1 => 2000, attr2 => 3000...) (Chaque colonne a de spécifique et de quelques valeurs). Le problème est que le "tableau" dans mon application peut être une requête avec certaines jointures et où l'une des clauses, qui peut prendre de 0.1 seconde. En faisant tout ce qui compte "table" est calculée à chaque fois, ce qui n'est pas nécessaire. Est-il possible de prendre les résultats que je veux avec une requête, ou "cache" de la requête qui génère de la table? Sinon, je crois que la dénormalisation serait la seule solution ici. Et je veux les mêmes résultats avec les requêtes. Je suis à l'aide de mysql myisam.
- Comment peut-on le nombre de lignes diffèrent pour chaque colonne de la même table?
- pouvez-vous stocker les résultats de la requête dans une table temporaire?
- Double Possible de Comment obtenir de multiples chefs d'accusation avec une requête SQL?
Vous devez vous connecter pour publier un commentaire.
Il est difficile de savoir comment vous aider sans en comprendre le contexte et la structure de vos données, mais je crois que cela peut vous aider:
La seule solution est de l'envelopper dans une sous-requête
Vous n'avez pas dit serveur de base de données que vous utilisez, mais si les tables temporaires sont disponibles, ils peuvent être la meilleure approche.