Перейти к содержимому


Создание рейтинга


Сообщений в теме: 6

#1 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 27 Март 2014 - 10:36

Есть таблица контроля качества, где прописывают оценки менеджерам.
Есть поля:
Менеджер ОП (тип=пользователь)
http://take.ms/ib5Tb
Оценка менеджера ОП (тип=список от 1 до 5).
Вторая таблица-это подтаблица Рейтинг в наших сотрудниках.
Поля:
Сотрудник (тип=связь. Только с каким полем его связать в сотрудниках? С ФИО или Пользователь? Связала с пользователем http://take.ms/8eYn8 http://take.ms/eBuSe )
Не могу теперь копировать данные в эту подтаблицу(

if ($line['Оценка менеджера ОП']!="")
{
$data['Сотрудник']=$line['Менеджер ОП'];
$data['Контрагент']=$line['Контрагенты']['ID'];
$data['Комментарий']=$line['Комментарий'];
$data['Рейтинг']=$line['Оценка менеджера ОП'];
insert_query($data,"Рейтинг");
}

Не копируется-поле Сотрудник=Менеджер ОП, оба пользователя

Сообщение отредактировал Dinara: 27 Март 2014 - 10:37


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2014 - 11:03

Цитата

Сотрудник (тип=связь. Только с каким полем его связать в сотрудниках? С ФИО или Пользователь?

Это не имеет значения. В поле связи в любом случае хранится ID записи.

Цитата

Не копируется-поле Сотрудник=Менеджер ОП, оба пользователя

В том то и дело, что это не так. У поля Сотрудник - тип "связь", и как я уже сказал выше там хранится id связанной записи, а в поле с типом "пользователь" - id пользователя. Это два совершенно разных поля, а вы копируете одно в другое, что бессмысленно. Предлагаю заменить тип поля Менеджер в таблице "Оценка менеджера ОП" на поле связи с Сотрудником, тогда копирование будет корректным.

#3 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 27 Март 2014 - 11:23

Да,точно))Тогда сразу все ок получилось..
Еще вопрос по этой части:
Как можно подсчитать количество строк в подтаблице? http://take.ms/bt4Ik
Сумму то прописать получилось при увеличении, а вот количество...

#4 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 27 Март 2014 - 12:01

Прописала как увеличение на единицу при изменении поля
if ($line['Последний рейтинг']!=0)
$line['Количество оценок']=$line['Количество оценок']+1;
Так корректно, или есть другие способы работы с подтаблицами при таких условиях?

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2014 - 12:25

А если последний рейтинг не изменится или вы удалите одну из записей? Наиболее корректно просто подсчитывать текущее число записей в подтаблице.

#6 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 27 Март 2014 - 12:50

А как это сделать? К сожалению продумать этот механизм у меня не получилось
Наиболее корректно просто подсчитывать текущее число записей в подтаблице.
Подскажете как прописать?

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2014 - 13:09

Так стандартный запрос же на подсчет записей через функцию count и фильтром по родительскому полю связи. Также как считать общую сумму по подтаблице.

$result = data_select_field(111, "count(*) as cnt_rec", "status=0 and f222=",$line['ID']);
$row = sql_fetch_assoc($result);
$line['Количество оценок'] = $row['cnt_rec'];

// 111 заменяете на id подтаблицы
// 222 заменяете на id поля поля связи с родительской таблицей






Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных