

Одинаковые значения
#1
Отправлено 04 Июнь 2015 - 13:14
#3
Отправлено 05 Июнь 2015 - 08:46
Id index name M1 M2 M3
1 7201 D1 2 2 2
2 7202 D2 1 1 3
3 7201 D1 4 4 4
4 7204 D4 3 3 3
5 7201 D1 4 5 5
Нужно объединить одинаковые index, name и записать в одну строку, а значение M1,M2,M3 суммировать?
#4
Отправлено 05 Июнь 2015 - 09:06
SELECT SUM(M1), SUM(M2), SUM(M3) FROM MyTable GROUP BY name;
Т.е. группируем по name и используем агрегатную функцию SUM для получения сумм.
#5
Отправлено 05 Июнь 2015 - 11:22
//$res = sql_query($sqlQuery);
//$row = sql_fetch_array($res);
//$m1 = $row['m1'];
//$m2 = $row['m2'];
//$m3 = $row['m3'];
//$line['M1'] = $m1;
//$line['M2'] = $m2;
//$line['M3'] = $m3;
Сообщение отредактировал ryskeldi: 05 Июнь 2015 - 11:25
#6
Отправлено 05 Июнь 2015 - 11:27
#7
Отправлено 05 Июнь 2015 - 12:07
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$m1 = $row['m1'];
$m2 = $row['m2'];
$m3 = $row['m3'];
$line['M1'] = $m1;
$line['M2'] = $m2;
$line['M3'] = $m3;
#8
Отправлено 05 Июнь 2015 - 17:23
$sqlQuery = "SELECT SUM(M1) as m1, SUM(M2) as m2, SUM(M3) as m3 FROM ".DATA_TABLE."111 GROUP BY name"; // 111 - id таблицы, заменить на реальный id
Во втором варианте ошибок еще больше.
#9
Отправлено 05 Июнь 2015 - 17:29
#10
Отправлено 06 Июнь 2015 - 08:36
Где "name", у меня на кириллице написано "Наименование".
$sqlQuery = "SELECT SUM(M1) as m1, SUM(M2) as m2, SUM(M3) as m3 FROM ".DATA_TABLE."111 GROUP BY 'Наименование', 'Индекс'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$line['M1'] = $row['m1'];
$line['M2'] = $row['m2'];
$line['M3'] = $row['m3'];
Если группировка по нескольким одинаковым именем поля идет, те по "Наименование" и "Индекс", выше написанный код верно? Спасибо!
#11
Отправлено 08 Июнь 2015 - 09:18
Цитата
Кириллические имена в запрос вставлять нельзя, это имена, используемые в самой программе, а в БД используются другие имена, которые выглядят как "f111", где 111 - это id поля. Это касается всех полей, в том числе тех, которые у вас описаны как "m1" и т.д. Замените, иначе получите ошибку SQL.
Цитата
Не совсем, бессмысленно группировать сразу по двум полям, если группировка по ним совпадает. Лишняя нагрузка только. По 2 полям группируют, если второе поле должно группироваться внутри первого. В вашем случае этого не требуется.
#12
Отправлено 08 Июнь 2015 - 14:23
$sqlQuery = "SELECT SUM(f1233) as m1, SUM(f1234) as m2, SUM(f1235) as m3 FROM ".DATA_TABLE."111 GROUP BY 'f1230'"; $res = sql_query($sqlQuery); $row = sql_fetch_array($res); $line['M1'] = $row['m1']; $line['M2'] = $row['m2']; $line['M3'] = $row['m3'];
Вот так написал, данный код одинаковые поля не группирует и ни какой результат не дает!
#13
Отправлено 08 Июнь 2015 - 18:25
$sqlQuery = "SELECT SUM(f1233) as m1, SUM(f1234) as m2, SUM(f1235) as m3 FROM ".DATA_TABLE."111 GROUP BY f1230";
#14
Отправлено 09 Июнь 2015 - 08:13
Группирует по одинаковым значением (f1230).
Теперь мне нужно, чтобы одинаковые значения записались в одной строке. Как мне реализовать, помогите пожалуйста!
#15
Отправлено 09 Июнь 2015 - 09:10
#16
Отправлено 09 Июнь 2015 - 09:20
Id index name M1 M2 M3
1 7201 D1 2 2 2
2 7202 D2 1 1 3
3 7201 D1 4 4 4
4 7204 D4 3 3 3
5 7201 D1 4 5 5
Результат должен быть:
1 7201 D1 7 9 11
#17
Отправлено 09 Июнь 2015 - 10:52
#18
Отправлено 09 Июнь 2015 - 11:42
$sqlQuery = "SELECT SUM(f1233) as m1, SUM(f1234) as m2, SUM(f1235) as m3 FROM ".DATA_TABLE."111 GROUP BY f1230";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$line['M1'] = $row['m1'];
$line['M2'] = $row['m2'];
$line['M3'] = $row['m3'];
$line['index'] = ?
$line['name'] = ?
#19
Отправлено 09 Июнь 2015 - 13:08
Должно быть что-то вроде:
$sqlQuery = "SELECT SUM(f1233) as m1, SUM(f1234) as m2, SUM(f1235) as m3, f111, f222 FROM ".DATA_TABLE."111 GROUP BY f1230"; $res = sql_query($sqlQuery); $row = sql_fetch_array($res); $line['M1'] = $row['m1']; $line['M2'] = $row['m2']; $line['M3'] = $row['m3']; $line['Индекс'] = $row['f111']; $line['Наименование'] = $row['f222'];
Вместо 111 и 222 подставьте реальные id полей.
#20
Отправлено 09 Июнь 2015 - 14:55
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных