Подсчет количества авторов в таблице

Kostyab

Новичок
Подсчет количества авторов в таблице

Добрый день всем!
Есть таблица типа
id | название статьи | авторы | keywords

У некоторых статей авторов много, пишутся они так: Иванов И.И., Петров П.П., Петров Ю.П., Сидоров С.С.
Как узнать количество авторов во всей таблице? Петровых двое, это разные авторы.
Не хотелось бы менять структуру базы данных, чтобы каждому автору соответствовала бы статья, а статье - keywords.

Второй вопрос. С помошью участников форума (задавал вопросы) я сдеал скрипты для своего сайта. Принято ли хвастаться результатами?

Спасибо!
 

.des.

Поставил пиво кому надо ;-)
Как узнать количество авторов во всей таблице? Петровых двое, это разные авторы.
Не хотелось бы менять структуру базы данных, чтобы каждому автору соответствовала бы статья, а статье - keywords.
Непродуманная база источник всех проблем. Я лично не вижу как бы ты мог вывести количество уникальных авторов запросом SQL
так что либо переделывай стурктуру либо делай это в пхп

Второй вопрос. С помошью участников форума (задавал вопросы) я сдеал скрипты для своего сайта. Принято ли хвастаться результатами?
Можешь дать ссылку на свой сайт в разделе оффтопик с отдельными благодарностями тем людям, кто тебе помог..
Это просто дань уважения.
 

Kostyab

Новичок
Спасибо!
Я готов делать в пхп, но мыслей абсолютно нету - как
 

.des.

Поставил пиво кому надо ;-)
сразу отсекаем некоторые повторения.
Заодно убираем пробелы по бокам... и ', ' (запятая пробел)заменяем на просто ','(запятая)
PHP:
SELECT REPLACE(DISTINCT(TRIM(authors)),', ',',') AS authors
FROM table;
но останутся эти авторы которые входят в одну книгу сразу несколько.
PHP:
// Для этого в пхп воспользуемся explode
$authors=array();
while($row=mysql_fetch_array($result))
{
    // Объединяем всех авторов в одном массиве.. 
    // тех которых сразу несколько разбиваем функцией explode
     $authors=array_merge($authors,explode(',',$row['authors']));
}
// Для получения уникальных используем array_unique
$authors=array_unique($authors);
// в массиве $authors наши уникальные авторы.
читаем про функции
[m]explode[/m]
[m]array_merge[/m]
[m]array_unique[/m]

Удачи.
 

Black_Angel

Guest
Делай 2 таблицы
статьи
id | название статьи | id_автора | keywords

автор
id_aвтора | ФИО_автора
 

.des.

Поставил пиво кому надо ;-)
BlackAngel тут по хорошему даже не две таблицы нужно :)
хинт -
1 автор написал много книг
1 книга написана многими авторами.
 

Black_Angel

Guest
Ну тогда 3 таблицы (если несколько авторов)
1 (статья)
id_статьи | название статьи | keywords
2 (автор)
id_aвтора | ФИО_автора
3 (главная)
id_главной | id_автора | id_статьи

Для "автор написал много книг" первый вариант подойдёт
 

Kostyab

Новичок
Спасибо!
У меня уже сделан очень большой объем работы - заполнена база данных с неправильной структурой (то есть всего 1 таблица), поэтому буду считать авторов с помощью пхп.
 

HEm

Сетевой бобер
если немного подумать то лучше все-таки перелить одну неправильную таблицу в несколько правильных
Нормальные формы рулят
 

Kostyab

Новичок
Понял, буду переделывать структуру. Жаль данные терять только.
 

.des.

Поставил пиво кому надо ;-)
Kostyab а кто тебя просит терять данные? создай новую базу и аккуратно перекинь данные из старой. Напиши скрипт который сделает это автоматически.
Данные терять не нужно.
 

Black_Angel

Guest
chira
id во всех таблицах подразумевает primary key :)
 
Сверху