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


Вычисление с условием


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

#1 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 04 Апрель 2014 - 07:29

Добрый день!!!!

Возник такой вопрос
Есть родительская таблица и под таблица,
Родительская таблица с полями
Экзамен1:
Экзамен2:
Экзамен3:

И под таблица с полями:
Эказмен1(поле со списком(список: 1 экзамен, 2 экзамен, 3 экзамен)):
Эказмен2(поле со списком(список: 1 экзамен, 2 экзамен, 3 экзамен)):
Эказмен3(поле со списком(список: 1 экзамен, 2 экзамен, 3 экзамен)):

Я выбираю в под таблице Эказмен1 со значением: 1 экзамен, 2 экзамен, 3 экзамен
После этого как будут выбраны все значения с под таблицы в родительской таблице в поле поменяться статус Экзамен1:Да
Если я выбираю в под таблице Экзамен1 и только два значения: 1 экзамен, 2 экзамен тогда в родительской таблице в поле экзамен1 должен писать сдано 2 экзамена.

Условие:
Если в под таблице выбраны 3 позиции тогда в родительской таблице в поле Эказамен1: Да
Но в под таблице может быть и 10 значений как это сделать?

Сообщение отредактировал rarken: 04 Апрель 2014 - 09:13

IF m cool stay cool

#2 CbCoder

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

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

Отправлено 04 Апрель 2014 - 10:20

Обращаетесь запросом к подтаблице и считаете значения по каждому из полей, в зависимости от этого заполняете родительские.

#3 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 04 Апрель 2014 - 10:39

Просмотр сообщенияCbCoder (04 Апрель 2014 - 10:20) писал:

Обращаетесь запросом к подтаблице и считаете значения по каждому из полей, в зависимости от этого заполняете родительские.
Получается это нужно делать вычисление. Тип вычисления будет отображение таблицы.
Но как сделать что бы он считывал сколько уже экзаменов было сдано и как сделать что бы одинаковых экзаменов не было в поле.
IF m cool stay cool

#4 CbCoder

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

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

Отправлено 04 Апрель 2014 - 11:27

Я же написал: делаете запрос к подтаблице, проходите по всем записям и считаете значения.

#5 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 04 Апрель 2014 - 12:17

Просмотр сообщенияCbCoder (04 Апрель 2014 - 11:27) писал:

Я же написал: делаете запрос к подтаблице, проходите по всем записям и считаете значения.
Извините а можно по подробнее)))))))
IF m cool stay cool

#6 CbCoder

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

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

Отправлено 04 Апрель 2014 - 12:25

Что именно подробнее? Как делать запросы к подтаблице - вы знаете (я уже давал примеры), кроме того информация об этом есть в документации и на форуме.

#7 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 04 Апрель 2014 - 15:01

Просмотр сообщенияCbCoder (04 Апрель 2014 - 12:25) писал:

Что именно подробнее? Как делать запросы к подтаблице - вы знаете (я уже давал примеры), кроме того информация об этом есть в документации и на форуме.
Если честно я почитал все так и не доходит до меня.)))))
IF m cool stay cool

#8 CbCoder

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

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

Отправлено 04 Апрель 2014 - 15:14

Если вы не можете самостоятельно решить задачу, написание вычислений можно заказать у специалистов. Например, у нас это дополнительная платная услуга.

#9 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 04 Апрель 2014 - 16:50

Ну а пример что бы можно было отталкнуться по примеру?
IF m cool stay cool

#10 CbCoder

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

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

Отправлено 04 Апрель 2014 - 17:03

Все нужные примеры есть в документации и на форуме. Остальное зависит только от вашего умения программировать.

#11 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 08 Апрель 2014 - 07:46

if ($line['Экзамен1']=="1 экзамен") $line['Связь с "Сотрудники"']['Экзамен1'] = "Осталось 3-Экзамена";
if ($line['Экзамен1']=="2 экзамен") $line['Связь с "Сотрудники"']['Экзамен1'] = "Осталось 2-Экзамена";
if ($line['Экзамен1']=="3 экзамен") $line['Связь с "Сотрудники"']['Экзамен1'] = "Осталось 1-Экзамена";
if ($line['Экзамен1']=="4 экзамен") $line['Связь с "Сотрудники"']['Экзамен1'] = "Все экзамены сданы";
Вот сделал что то в этом вроде, а как сделать к примеру если я выбираю не первый а второй.
я понимаю это условие работает если все выбирать по порядку.))
А сделать запрос?))

Сообщение отредактировал rarken: 08 Апрель 2014 - 07:47

IF m cool stay cool

#12 CbCoder

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

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

Отправлено 08 Апрель 2014 - 08:59

В данном случае запрос не нужен, у вас вычисление уже находится в подчиненной записи.

#13 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 08 Апрель 2014 - 09:12

Просмотр сообщенияCbCoder (08 Апрель 2014 - 08:59) писал:

В данном случае запрос не нужен, у вас вычисление уже находится в подчиненной записи.
Ну вот если я выбираю со списка 2 экзамен то он автоматический в статусе показывает осталось 2-экзамена то у меня еще а так по факту у меня осталось еще 4. а вот как сделать что бы он по количеству считал или считал какие уже экзамены сданы и показывал их остаток по окончанию показывал экзамены сданы?
IF m cool stay cool

#14 CbCoder

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

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

Отправлено 08 Апрель 2014 - 11:57

Как раз для подсчета количества записей и нужен запрос:

$result = data_select_field(111, "count(*) as cnt", "status=0 and f222=",$line['ID']);
$row = sql_fetch_assoc($result);
$cnt_rec = $row['cnt_rec'];

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


#15 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 08 Апрель 2014 - 14:21

Просмотр сообщенияCbCoder (08 Апрель 2014 - 11:57) писал:

Как раз для подсчета количества записей и нужен запрос:

$result = data_select_field(111, "count(*) as cnt", "status=0 and f222=",$line['ID']);
$row = sql_fetch_assoc($result);
$cnt_rec = $row['cnt_rec'];

// 111 заменяете на id подтаблицы
// 222 заменяете на id поля поля связи с родительской таблицей
Извиняюсь кончено а где указать сколько записей должно проверяться?
IF m cool stay cool

#16 CbCoder

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

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

Отправлено 08 Апрель 2014 - 15:41

Где захотите, там и будет проверяться. Код выше для родительской записи, на событие "отображение поля".





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

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