прошу помощи имеется таблица 'chenel' базы данных: id | name | chenel 1 | Pupkin | main, work 2 | vasya | main 3 | petya | group, work нужно чтобы выводило как: каналы | модераторы | Имена через запятую| main | 2 | Pupkin, vasya work | 2 | Pupkin, petya group | 1 | petya Какой запрос нужно сделать
да так и есть, скажи есть другие варианты вывода, если поменять запятую на чтото другое нужно как то разделить эту ячейку
не нужно хранить такие списки вообще. для отдельного значения делайте отдельноую строку в бд. т.е. у вас должно быть так в БД тогда ваша задача решится просто Код (Text): SELECT chenel, count(*) cnt, group_concat(name) as chanels FROM `chenel_table` group by chenel
да ето ясно))) скажи а можно ли сделать таблицу 2 и как то записать значения из первой в том формате как ты привел первая таблица просто используется в других скриптах а если использовать метод http://php.ru/manual/function.explode.html
если есть большое желание - то можно сдеалть это ручками(на php). тоесть выбираем данные как они есть проходим по циклу по записям. поле chenel разбиваем по запятой через explode() формируем необходимый нам массив. с нужной группировкой
сделал следующее Код (Text): $chenel = explode(", ", $row["chenel"] ); echo " ".$chenel[0].", "; Выводится следующее: Код (Text): ~Terraria~, rammstein, Ты+я=любовь, Ты+я=любовь, торговый и его друзья, СОК Колымский , смех да и только, Радио Record, Радио Radost, Радио Radost, Профессиональный лицей № 1, Мобильные устройства, Лицей №1 9 класс А, Ленинград, Клуб Братина, Клуб Братина , Кино, Каста, Ил-2 Штурмовик, Знакомства, для позитивных людей=)), теперь вопрос как убрать из $chenel[0] повторяющиеся каналы)))
array_unique() Это гибельный путь — создавать кривую базу и потом все манипуляции с данными перекладывать на PHP. По мере усложнения задачи, попаболь будет увеличиваться в геометрической прогрессии. Надо базу прямыми руками делать.
Помогли решить мою проблему Код (Text): SELECT g_1 as chenel,COUNT(g_1) as m_count,group_concat(name1 separator ', ') as g_names FROM ((SELECT `name` as name1,SUBSTRING_INDEX(chenel,', ',1) as g_1 FROM chenel) UNION (SELECT `name` as name1,SUBSTRING_INDEX(SUBSTRING_INDEX(chenel, ', ', 2), ', ', -1) as g_1 FROM chenel)) as t1 GROUP BY g_1 теперь вопрос другой как сделать из данного вывода: /Pupkin, vasya echo "<td><a href='/".$row["name"]."'>".$row["g_names"]."</a></td>"; чтобы на каждого отдельного модератора можно было сделать ссылку по пути href='/".$row["name"]."'
блин не все имена выводит больше двух не идет где поправить??? я так понял нужно добовлять еще запросы Код (Text): UNION (SELECT `title` as title1,SUBSTRING_INDEX(SUBSTRING_INDEX(chenel, ', ', 3), ', ', -1) as g_1 FROM dle_dt_tracks) UNION (SELECT `title` as title1,SUBSTRING_INDEX(SUBSTRING_INDEX(chenel, ', ', 4), ', ', -1) as g_1 FROM dle_dt_tracks) UNION (SELECT `title` as title1,SUBSTRING_INDEX(SUBSTRING_INDEX(chenel, ', ', 5), ', ', -1) as g_1 FROM dle_dt_tracks) UNION (SELECT `title` as title1,SUBSTRING_INDEX(SUBSTRING_INDEX(chenel, ', ', 6), ', ', -1) as g_1 FROM dle_dt_tracks) но тогда какая нагрузка будет на базу