2011-09-14 4 views
0

Je dois obtenir la note moyenne et le nombre total de notes pour un utilisateur particulier, puis sélectionnez tous les simples évaluations (RATING_VALUE, rating_text, créateur) ainsi:SQL combiner COUNT et requête AVG avec SELECT

$rating_query = mysql_query("SELECT COUNT(1) as rating_count 
,AVG(rating_value), rating_value, rating_text, creator 
FROM user_rating WHERE rated_user = $user_id"); 

Cette requête renvoie le résultat COUNT (1) et l'AVG (rating_value) pour chaque ligne, mais je n'ai besoin de ces valeurs qu'une seule fois.

Y at-il un moyen de le faire sans faire 2 requêtes séparées?

+0

'Y a-t-il un moyen de le faire sans faire 2 requêtes séparées?' NON – ajreal

+0

Pourquoi voulez-vous avoir ceci dans une requête? Les résultats 'rating_count' et' AVG (rating_value) 'seraient répétés pour chaque ligne. Pourrait aussi bien l'interroger une fois. – Vache

+0

Voulez-vous dire «GROUP BY»? – Kevin

Répondre

1

Il peut y avoir un truc dont je ne suis pas conscient, mais je ne pense pas que ce soit possible dans une seule requête. Vous pouvez essayer d'utiliser une clause GROUP BY si cela vous convient, mais je suppose que cela ne provient probablement pas des noms de colonne que vous utilisez. Toute relation nécessite une seule valeur atomique à une ligne et une colonne donnée, même si cette valeur est nulle. Ce que vous demandez, c'est que les colonnes 1 et 2 de chaque rangée, mais les premières n'ont aucune valeur, et je ne pense pas que ce soit possible.