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


Как подсчитать сколько записей сделано в подчиненной таблице?


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

#1 dolphin

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

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

Отправлено 17 Январь 2012 - 17:47

Здравствуйте.

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

Допустим, у меня есть родительская "Таблица1" и есть подчиненная "Таблица2", которая имеет "поле1" типа связь с "Таблицей1".

Необходимо выводить в "Таблица1" поле "ПолеХ" в котором будет считаться, сколько записей имеет таблица "Таблица2".

#2 CbCoder

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

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

Отправлено 17 Январь 2012 - 18:00

А в чем проблема то? Создаете вычисление, в нем запрос к подчиненной таблице с условием "поле связи с родительской таблицей равно текущей записи", и считаете количество возвращенных запросом записей. Все необходимые сведения для составления запросов имеются в документации.

#3 dolphin

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

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

Отправлено 17 Январь 2012 - 18:40

:) сейчас попробуем...

#4 dolphin

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

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

Отправлено 17 Январь 2012 - 18:46

Подскажите, пожалуйста, поле связи равно текущей записи это так будет: WHERE fXXX = CURRENT ???

#5 dolphin

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

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

Отправлено 17 Январь 2012 - 18:50

Хм... у меня локальная версия, как я узнаю код поля? :(

#6 CbCoder

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

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

Отправлено 17 Январь 2012 - 19:01

Просмотр сообщенияdolphin (17 Январь 2012 - 18:46) писал:

Подскажите, пожалуйста, поле связи равно текущей записи это так будет: WHERE fXXX = CURRENT ???
WHERE fXXX = $ID

Просмотр сообщенияdolphin (17 Январь 2012 - 18:50) писал:

Хм... у меня локальная версия, как я узнаю код поля? :(
Причем тут тип версии, не понял? Код смотрится в списке полей при наведении мыши.

Вы прочли всю документацию по вычислениям?

#7 dolphin

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

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

Отправлено 17 Январь 2012 - 19:11

Получается вот так чтоли:
$sqlQuery = "SELECT COUNT(*) FROM ". DATA_TABLE ."90 WHERE `f1098` = {ID}";
$row = mysql_fetch_row($sqlQuery);
$total = $row[0]; // всего записей
return $total;


#8 dolphin

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

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

Отправлено 17 Январь 2012 - 19:12

Цитата

Вы прочли всю документацию по вычислениям?
Не только по вычислениям :) Я уже как почти 3 года пользуюсь КБ с начала ее выпусков :)

#9 dolphin

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

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

Отправлено 17 Январь 2012 - 19:17

Хм... Ошибка во второй строчке кода :(

#10 CbCoder

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

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

Отправлено 17 Январь 2012 - 19:19

Просмотр сообщенияdolphin (17 Январь 2012 - 19:11) писал:

Получается вот так чтоли:
$sqlQuery = "SELECT COUNT(*) FROM ". DATA_TABLE ."90 WHERE `f1098` = {ID}";
$row = mysql_fetch_row($sqlQuery);
$total = $row[0]; // всего записей
return $total;
Вроде да. У вас версия не 1.9.5 что ли? Для 1.9.5 код должен быть другим.

Просмотр сообщенияdolphin (17 Январь 2012 - 19:12) писал:

Не только по вычислениям :) Я уже как почти 3 года пользуюсь КБ с начала ее выпусков :)
А вопросы как у новичка ;) Хотя код вы составили не так я вам писал, как будто сами все знаете.

#11 dolphin

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

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

Отправлено 17 Январь 2012 - 19:26

:) ну извините пожалуйста, пользуюсь то я КБ давным давно, а вот программист из меня - никакой. Ни php ни mysql не знаю.

Код составил полазив по интернету, поискав ответы на вопрос как посчитать количество возвращенных запросом записей :) глядишь в цель выстрелил, но так и не получилось...

Да, у меня локальная версия 1,9,5

#12 dolphin

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

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

Отправлено 17 Январь 2012 - 19:29

Ну, тогда как Вы сказали получается такой запрос надо делать:
$sqlQuery = "SELECT * FROM ". DATA_TABLE ."90 WHERE `f1098` = $ID";
$total = count($sqlQuery);
return $total;


#13 dolphin

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

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

Отправлено 17 Январь 2012 - 19:30

Ну вот. уже лучше, ошибок КБ не выдает, но и поле с вычислением у меня пустое :)))))

#14 dolphin

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

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

Отправлено 17 Январь 2012 - 19:49

Что-то вообще никак не получается, как только я запрос не писал :(

#15 dolphin

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

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

Отправлено 17 Январь 2012 - 20:00

Эксперименты продолжаются... На сей раз хоть что-то получилось. По коду
$sqlQuery = "SELECT COUNT(*) FROM ". DATA_TABLE ."90 WHERE `f1098` = {ID}";
$total = $sqlQuery[0]; // всего записей
$line['ДП'] = $total;
теперь поле ДП, хоть и не равно у меня количеству строк в подчиненной таблице, но зато выводит буковку "S" )))))

#16 dolphin

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

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

Отправлено 17 Январь 2012 - 20:30

В продолжении тяжких трудов не программиста над запросом, добился результата "0" в поле ДП :)
$sqlQuery = "SELECT f1098 = $ID FROM ".DATA_TABLE."90";
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$total = $row[0];
$line['ДП'] = $total;


#17 dolphin

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

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

Отправлено 17 Январь 2012 - 20:35

Да я гений :)

Случайным образом совместил два предыдущих запроса, получилось следующее:

$sqlQuery = "SELECT COUNT(*) FROM ". DATA_TABLE ."90 WHERE `f1098` = $ID";
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$total = $row[0];
$line['ДП'] = $total;

Итого все считает! Вопрос можно считать закрытым :) Всем спасибо!

#18 hers

    Участник

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

Отправлено 04 Декабрь 2015 - 10:04

Интересно , а в версии 2.0.4 будет работать полученный код?

#19 CbCoder

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

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

Отправлено 04 Декабрь 2015 - 10:18

Цитата

Интересно , а в версии 2.0.4 будет работать полученный код?

Этот код практически универсальный, разве что до 1.9.5 использовалось {ID} вместо $ID, но с 1.9.5 ничего в этом плане не отменилось, т.е. код вполне рабочий. Другое дело, что сейчас рекомендуется другие функции использовать, например связку sql_query + sql_fetch_array, вместо стандартных mysql_query + mysql_fetch_array, или вообще, data_select (в данном случае). Подробности здесь.

#20 hers

    Участник

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

Отправлено 14 Декабрь 2015 - 11:53

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

$sql = "SELECT f4760 as client FROM ". DATA_TABLE ."350 WHERE f6530 = $ID AND f4890 = 'Есть у клиента'";
$res = sql_query($sql);
$row = sql_fetch_array($res);
$client = $row['client'];
$line['Центр системы'] = $client;

В $client передается цифровое значение ,его id , те работает ,но нужно чтоб было Название клиента!





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

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