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

  • Автор темы Автор темы Kostyab
  • Дата начала Дата начала

Kostyab

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

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

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

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

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

Второй вопрос. С помошью участников форума (задавал вопросы) я сдеал скрипты для своего сайта. Принято ли хвастаться результатами?
Можешь дать ссылку на свой сайт в разделе оффтопик с отдельными благодарностями тем людям, кто тебе помог..
Это просто дань уважения.
 
Спасибо!
Я готов делать в пхп, но мыслей абсолютно нету - как
 
сразу отсекаем некоторые повторения.
Заодно убираем пробелы по бокам... и ', ' (запятая пробел)заменяем на просто ','(запятая)
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]

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

автор
id_aвтора | ФИО_автора
 
BlackAngel тут по хорошему даже не две таблицы нужно :)
хинт -
1 автор написал много книг
1 книга написана многими авторами.
 
Ну тогда 3 таблицы (если несколько авторов)
1 (статья)
id_статьи | название статьи | keywords
2 (автор)
id_aвтора | ФИО_автора
3 (главная)
id_главной | id_автора | id_статьи

Для "автор написал много книг" первый вариант подойдёт
 
Спасибо!
У меня уже сделан очень большой объем работы - заполнена база данных с неправильной структурой (то есть всего 1 таблица), поэтому буду считать авторов с помощью пхп.
 
если немного подумать то лучше все-таки перелить одну неправильную таблицу в несколько правильных
Нормальные формы рулят
 
Понял, буду переделывать структуру. Жаль данные терять только.
 
Kostyab а кто тебя просит терять данные? создай новую базу и аккуратно перекинь данные из старой. Напиши скрипт который сделает это автоматически.
Данные терять не нужно.
 
chira
id во всех таблицах подразумевает primary key :)
 
Сверху