2013-02-14 5 views
0

J'ai une table avec 3 colonnes: Animal, key, owner. ExempleMYSQL Plusieurs requêtes ou une seule requête - ce qui est plus efficace

Cat  1  Bob 
Bird 2  Bob 
dog  3  Bob 
dog  4  Andy 
Lizard 5  Andy 
Bird 6  Andy 
Cat  7  Andy 

et une table apparentée par animal (colonnes, poids). Par exemple, table CAT_WEIGHT:

1 12 
7 17 

Je veux trouver le Min, Max, Average, Total et Count pour chaque type d'animal, mais seulement pour un propriétaire particulier. Est-il possible de les calculer en utilisant une seule requête MYSQL?

Je sais que je peux le faire dans plusieurs requêtes, mais je cherche la meilleure façon.

Merci

+0

S'il vous plaît noter: Un ou plus de réponses ci-dessous peuvent ne plus s'appliquer à cette question, car il a été édité pour être très différent de la question originale. – bernie

Répondre

3

Oui, il est possible de le faire en utilisant une seule requête. Toutes choses égales par ailleurs, vous voulez utiliser le moins de requêtes possible. Les allers-retours à la base de données sont généralement les choses les plus chères que vous rencontrerez dans les programmes.

select 
    animal, 
    min(weight) min_weight, 
    max(weight) max_weight, 
    avg(weight) avg_weight, 
    sum(weight) tot_weight, 
    count(weight) cnt_weight 
from 
    your_table 
group by 
    animal 
order by animal; 
+0

Je pense que c'est proche. J'ai réalisé que le poids est dans une autre table (voir questoin révisé). Est-ce encore possible dans une seule requête? – TSG

+0

Réviser une question de façon à ce qu'elle soit significativement différente de la question initiale n'est pas nécessairement quelque chose qui est fait très souvent. Vous voudrez peut-être ouvrir une question distincte. Ou peut-être que quelqu'un viendra et répondra à la question telle qu'elle est actuellement. – bernie

+0

Vous avez raison - j'ouvrirai une nouvelle question. Merci – TSG

0

Que diriez-vous:

select min (poids), max (poids), somme (poids), count (*) du groupe animals_table par des animaux

+0

Cela compterait les lignes avec un poids NULL. – bernie

+0

Ooopsie. Édité. – ethrbunny

Questions connexes