Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Группировка значений
Форумы портала PHP.SU » » Работа с СУБД » Группировка значений

Страниц (1): [1]
 

1. SunChase - 05 Октября, 2011 - 17:09:07 - перейти к сообщению
Доброго времени суток. Подскажите как вывести из таблицы бд данные типа:
#id year
1 2007
2 2007
3 2007
4 2008
5 2008


в такой форме:

#year: id, тоесть:
2007: 1,2,3
2008: 4,5
2. LIME - 05 Октября, 2011 - 17:13:31 - перейти к сообщению
.
3. Мелкий - 05 Октября, 2011 - 17:26:36 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `year`, group_concat(`id`) AS `ids` FROM `tbl` GROUP BY `year`
4. SunChase - 05 Октября, 2011 - 17:35:28 - перейти к сообщению
Мелкий пишет:
GROUP BY `year`


я так тоже сначала подумал, вот только GROUP BY разве не выдаёт только по одной записи из каждой сформированной группы?(пример)
5. Мелкий - 05 Октября, 2011 - 17:53:53 - перейти к сообщению
6. SunChase - 05 Октября, 2011 - 18:17:00 - перейти к сообщению
Спасибо. Почти то, что нужно. Уточню задачку:

Есть список групп факультета, поле 'year' которого содержит год выпуска. Каждая группа факультета содержит собственную страницу, переход на которую осуществляется по id'шнику.

Задача заключается в формировании html-таблицы, где каждая запись является ссылкой на страницу группы. Группирование производится по полю 'year', и его же нужно отметить в самой таблице. То есть, получить следующее:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Год 2007:
  3. <a href="URL к странице группы">Кодовое название группы</a>
  4. .........
  5. ........
  6. Год 2008:
  7. <a href="URL к странице группы">Кодовое название группы</a>
7. Мелкий - 05 Октября, 2011 - 19:00:46 - перейти к сообщению
Тогда удобнее будет запросить не группированный список, а только отсортированный по году. И уже при выводе смотреть - если в этой строке год не тот, что в предыдущей - то вставить разделитель.

 

Powered by ExBB FM 1.0 RC1