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


Вопрос по вычислениям


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

#41 CbCoder

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

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

Отправлено 16 Май 2012 - 08:41

Замените строку
$result = mysql_query($sqlQuery);
на
$result = mysql_query($sqlQuery) or die(mysql_error());

Скорее всего ошибка выполнения - неверный запрос. Но чтобы понять, в чем именно, необходим ее вывод через mysql_error()

#42 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 16 Май 2012 - 15:28

СПАСИБО ВСЕ РЕШИЛИ!!!!!

#43 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 17 Май 2012 - 13:25

Подскажите пожайлуста, а можно сделать запрос выбора максимального значения из нескольких таблиц?

#44 CbCoder

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

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

Отправлено 17 Май 2012 - 13:59

Делаете несколько запросов и сверяете результаты.

#45 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 17 Май 2012 - 14:08

$nakl = data_table("Учет картриджей","id=$ID");
$IDSTR=$nakl["ID"];
//
$sqlQuery = "SELECT max(f1259) as max FROM ".DATA_TABLE."101 WHERE f1257=".$IDSTR;
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$line['Пробег'] = $row['max'];
//
$nakl1 = data_table("Журнал работ","id=$ID");
$IDSTR1=$nakl1["ID"];
//
$sqlQuery1 = "SELECT max(f1204) as max1 FROM ".DATA_TABLE."98 WHERE f1206=".$IDSTR1;
$result1 = mysql_query($sqlQuery1);
$row1 = mysql_fetch_array($result1);
//
//if $row['max']>$row1['max1'];
//{
//$line['Пробег'] = $row['max'];
//}
//else
//{
//$line['Пробег'] = $row1['max1'];
//}
$nakl = data_table("Учет картриджей","id=$ID");
$line['Пробег'] = $row1['max1'];

Вот попробовали не работает

#46 CbCoder

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

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

Отправлено 17 Май 2012 - 14:24

У вас в коде грубые ошибки, разумеется работать не будет.

if $row['max']>$row1['max1'];
- это что за конструкция, простите? Может имелось ввиду
if ($row['max']>$row1['max1'])
?
- синтаксическая ошибка

$nakl = data_table("Учет картриджей","id=$ID");
...
$nakl1 = data_table("Журнал работ","id=$ID");
Вычисление в какой таблице работает? В "Учет картриджей" или в "Журнал работ"? Вы пытаетесь получить текущую запись из двух разных таблиц, чего никак быть не может разумеется.

#47 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 17 Май 2012 - 14:33

а нам так и надо из двух разных таблиц выбрать цифры сравнить их и в поле записать максимальное значение

#48 CbCoder

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

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

Отправлено 17 Май 2012 - 14:40

Текущую запись для чего получаете? Алгоритм можете построчно расписать?

#49 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 17 Май 2012 - 14:55

Есть поле "ПРОБЕГ" в таблице 1(у неё две подчиненые таблицы 2 и 3)
Необходимо выбрать из поля "F1204" таблицы 2 максимальное значение
из поля "F1259" таблицы 3 максимальное значение
сравнить два значения, выбрать максимальное и записать в поле "ПРОБЕГ" таблицы 1

#50 CbCoder

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

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

Отправлено 17 Май 2012 - 15:11

"Учет картриджей" и "Журнал работ" - это и есть подчиненные таблицы что ли? Тогда код принципиально неверный. Команды
$nakl = data_table("Учет картриджей","id=$ID");
$IDSTR=$nakl["ID"];
и
$nakl1 = data_table("Журнал работ","id=$ID");
$IDSTR1=$nakl1["ID"];
в данном случае абсолютно бессмысленны. Что вы хотите через них получить? Условие "id=$ID" ищет текущую запись в основной таблице, а не отбирает подчиненные.
Если поля f1257 и f1206 - это поля связи с основной таблицей, то правильный код такой:
$sqlQuery = "SELECT max(f1259) as max FROM ".DATA_TABLE."101 WHERE f1257=$ID";
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
//
$sqlQuery1 = "SELECT max(f1204) as max1 FROM ".DATA_TABLE."98 WHERE f1206=$ID";
$result1 = mysql_query($sqlQuery1);
$row1 = mysql_fetch_array($result1);
//
if ($row['max']>$row1['max1'])
{
  $line['Пробег'] = $row['max'];
}
else
{
  $line['Пробег'] = $row1['max1'];
}


#51 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 17 Май 2012 - 15:23

не работает
eval()'d code on line 13 Parse error: syntax error, unexpected T_ELSE in /usr/share/cb/include/functions1.php(240)

#52 CbCoder

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

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

Отправлено 17 Май 2012 - 17:11

Замените еще раз. Вашу же ошибку забыл подправить, когда копировал код.

Просмотр сообщенияCbCoder (17 Май 2012 - 14:24) писал:

if $row['max']>$row1['max1'];
- это что за конструкция, простите? Может имелось ввиду
if ($row['max']>$row1['max1'])
?
- синтаксическая ошибка


#53 contrans

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 18 Май 2012 - 07:58

СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!

#54 AssVlad

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

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 03 Июнь 2012 - 12:49

Добрый день! Не стал создавать новую тему про вычисления, у меня вопрос! ЕСли я делаю простое вычисление в одной таблице, то все получается $line['Сумма ген.'] = $line['Сумма'];, если хочу данные из другой, подчиненной таблицы, то ничего не происходит $line['Сумма ген.'] = $line['ПС']['Формы']; вроде все названия проверил правильно!

#55 CbCoder

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

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

Отправлено 04 Июнь 2012 - 08:56

Каким образом вы берете данные из подчиненной таблицы? Распишите подробнее.

#56 AssVlad

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

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 04 Июнь 2012 - 09:32

Смотрю документацию по Вычислениям "Использование данных из другой таблицы" подставляю свои данные $line['Маржа']=$line['ПС']['R304'] + $line['ПС']['Формы']; ну и пытаюсь вычислить, где Маржа это поле в таблице Маржа, R304 и Формы поля в таблице ПС. Это как программа показывает! На сколько я понимаю в mysql они по другому называются

#57 CbCoder

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

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

Отправлено 04 Июнь 2012 - 09:47

Вы неверно понимаете вычисления, скорее всего. В выражении $line['ПС']['R304'], "ПС" - это не таблица, а поле с типом связь, в таблице "Маржа" (т.к. вычисляемое поле находится в ней). Если такого поля в ней нет, то разумеется вычисление работать не будет.

#58 AssVlad

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

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 04 Июнь 2012 - 09:54

Может быть, второй день тока разбираюсь! В конфигурации "Таблицы и представления категории "Маржа"" у меня имеется три таблицы Маржа, ПС, ФТП. ПС и ФТП связываются с Маржой полем типа связь по номеру (Номер), а вычислять мне надо поля в ПС - р304 + бумага в таблицу Маржа

#59 CbCoder

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

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

Отправлено 04 Июнь 2012 - 10:04

Начнем с того, что в подчиненной таблице может быть несколько записей. Вам необходимо подсчитать сумму по всем записям, или извлечь данные из какой-то одной, конкретной записи (первой или последней, к примеру)?

#60 AssVlad

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

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 04 Июнь 2012 - 10:07

из конкретной с номером 2 таким же номером как и в главной таблице номер 2 (это связь по полю Номер)





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

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