2015-07-08 2 views
0

Я выполняю действительно простой запрос MySQL и пытаюсь упорядочить данные по значению продажи ... столбец в базе данных установлен в десятичное (16,2), но когда поступают данные назад он не сортируется в любом порядке.Порядок PHP и MYSQL по десятичной колонке

Вот мой код:

$query = " 
SELECT * 
    , SUM(sale_value) 
    FROM sale 
WHERE week_no = $today 
GROUP 
    BY user_id 
ORDER 
    BY sale_value DESC 
"; 

$result = mysql_query($query) or die(mysql_error()); 
// Print out result 
while($row = mysql_fetch_array($result)){ 
echo "Total ". $row['user_id']. " = £". $row['SUM(sale_value)']; 
echo "<br />"; 
} 

И вот результат я получаю:

Total 14 = £2195.77 
Total 62 = £865.01 
Total 52 = £2989.53 
Total 42 = £2689.47 
Total 51 = £894.51 
Total 48 = £962.09 
Total 39 = £1161.43 
Total 33 = £1341.49 
Total 1 = £5989.57 
Total 8 = £4937.48 
Total 59 = £1377.70 
Total 32 = £3063.06 
Total 41 = £1937.82 
Total 60 = £2981.01 
Total 53 = £1050.21 
Total 46 = £1836.05 
Total 57 = £310.43 
Total 19 = £2534.92 
Total 5 = £1946.01 
Total 56 = £471.00 
Total 7 = £865.00 
Total 2 = £754.30 

Можно ли определить, что я делаю неправильно?

+0

вы пробовали 'SUM (sale_value) AS total', а затем' ORDER BY общего DESC'? – Scott

+0

SELECT * .. GROUP BY .. er, no. – Strawberry

ответ

2

Вы производите произвольное значение в соответствующей строке, а не сумму. Дайте столбец псевдоним и использовать его:

SELECT *, SUM(sale_value) as total_sale_value 
FROM sale 
WHERE week_no = ".$today." 
GROUP BY user_id 
ORDER By total_sale_value DESC; 

Кстати, select * действительно, действительно, действительно плохая идея использовать с group by. Вы должны четко список столбцов используется для определения каждой агрегации группы:

SELECT user_id, SUM(sale_value) as total_sale_value 
FROM sale 
WHERE week_no = ".$today." 
GROUP BY user_id 
ORDER By total_sale_value DESC; 
Смежные вопросы