[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Группировка
kss
Здравствуйте. скажите пожалуйста. есть код
$q=mysql_query("SELECT * FROM vedomost  WHERE `kod_uch`='".$g."' ORDER BY dat DESC");
$row5 = mysql_query($q);

echo "<table border=\"1\">\n";
$line = mysql_fetch_array($q, MYSQL_ASSOC);
echo "\t<tr>\n";
echo "\t\t<th>#</th>\n";
foreach (array_keys($line) as $col_value) {
echo "\t\t<th>$col_value</th>\n";
}
echo "\t</tr>\n";
$i=0;
do {
echo "\t<tr>\n";
$i++;
echo "\t\t<th>$i</th>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}while ($line = mysql_fetch_array($q, MYSQL_ASSOC));
echo "</table>\n";



При группировке выводит одно значение в строке. хотя должно быть два просто в разных колонках.. почему не происходит группировки?



Спустя 23 минуты, 14 секунд (10.12.2011 - 16:35) Placido написал(а):
Не совсем понятно, в чем проблема. Здесь не видно группировки (GROUP BY), здесь я вижу сортировку по полю `dat` (ORDER BY).

Спустя 2 минуты, 2 секунды (10.12.2011 - 16:37) kss написал(а):
видимо не указал.... в общем. когда делаю группировку. по идее данные с разных колонок должны встать в одну строку, а мне выводит только последнее значение

Спустя 1 час, 12 минут, 25 секунд (10.12.2011 - 17:50) kss написал(а):
Вот так это все выглядит:::

Дата | кол1 | кол2
10.02----2
10.02-----------4

Почему в запросе при объединении выдает:
Дата | кол1 | кол2
10.02----2

хотя надо
Дата | кол1 | кол2
10.02----2------4

Спустя 7 минут, 28 секунд (10.12.2011 - 17:57) Placido написал(а):
Еще раз, здесь не группировка, а сортировка.
Группировка - это GROUP BY, а не ORDER BY.

Спустя 1 минута, 56 секунд (10.12.2011 - 17:59) kss написал(а):
я поставил GROUP BY. знаю, но даже при этом не дает нужный результат

Спустя 16 минут, 38 секунд (10.12.2011 - 18:16) kss написал(а):
необходимо сделать выборку по kod_uch.это я сделал через форму.

CREATE TABLE IF NOT EXISTS `vedomost` (
`dat` varchar(60) NOT NULL,
`kod_uch` varchar(60) NOT NULL,
`1` varchar(60) NOT NULL,
`10` varchar(60) NOT NULL,
`11` varchar(60) NOT NULL,
`12` varchar(60) NOT NULL,
`17` varchar(60) NOT NULL,
`18` varchar(60) NOT NULL,
`2` varchar(60) NOT NULL,
`21` varchar(60) NOT NULL,
`23` varchar(60) NOT NULL,
`25` varchar(60) NOT NULL,
`26` varchar(60) NOT NULL,
`27` varchar(60) NOT NULL,
`28` varchar(60) NOT NULL,
`29` varchar(60) NOT NULL,
`3` varchar(60) NOT NULL,
`30` varchar(60) NOT NULL,
`33` varchar(60) NOT NULL,
`35` varchar(60) NOT NULL,
`36` varchar(60) NOT NULL,
`42` varchar(60) NOT NULL,
`6` varchar(60) NOT NULL,
`7` varchar(60) NOT NULL,
`8` varchar(60) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
INSERT INTO `edication`.`vedomost` (`dat`,`kod_uch`,`2`)VALUES('30.11.2011','Б - 696','4');
INSERT INTO `edication`.`vedomost` (`dat`,`kod_uch`,`2`)VALUES('30.11.2011','В - 413','4');
INSERT INTO `edication`.`vedomost` (`dat`,`kod_uch`,`2`)VALUES('30.11.2011','Г3 - 559','3');


Затем мне необходимо получить объединенные оценки по датам в одной строке. Количетсво колоной будет все время меняться.

Спустя 20 минут, 7 секунд (10.12.2011 - 18:36) Placido написал(а):
SELECT
`kod_uch`,
`dat`,
GROUP_CONCAT(`1`),
GROUP_CONCAT(`10`),
GROUP_CONCAT(`12`),
GROUP_CONCAT(`17`) /и т.д. - так сделать все поля через запятую/
FROM
`vedomost`
WHERE
`kod_uch` = 'код ученика'
GROUP BY `dat`;

Если оценок в какую-то дату по определенному предмету больше одной, то они выведутся через запятую. Если поменять GROUP_CONCAT на MAX -выведутся максимальные оценки по каждому предмету за эту дату, AVG - средние.

Спустя 8 минут, 57 секунд (10.12.2011 - 18:45) kss написал(а):
я же объяснил. количество колонок будет меняться.... я не могу у каждой прописать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.