Страница 1 из 1

Конструктор отчётов - отображение "Имени" из глобального списка вместо ID

Добавлено: 20 мар 2025, 13:12
gayfullin.r
Сформировал SQL-запрос в "Конструкторе отчётов", но он выдает id записи из глобального списка, а надо вывести "Имя" (наименование записи). Помогите плиз!

Код: Выделить всё

SELECT 
	e.field_214 AS tip, 
	SUM(e.field_215) AS zakaz 
	FROM app_entity_21 e 
	GROUP BY tip
    ORDER BY zakaz DESC;
Поле 214 - выпадающий список с глобальным списком.
Изображение

Re: Конструктор отчётов - отображение "Имени" из глобального списка вместо ID

Добавлено: 20 мар 2025, 14:06
nruslan2
ваш запрос выводит данные, которые записаны в ячейке в таблице - а это ид записи списка,
а для вывода имени надо сформировать запрос, таким образом чтобы он еще и брал данные из таблицы, где хранятся данные относящиеся к списку!

Re: Конструктор отчётов - отображение "Имени" из глобального списка вместо ID

Добавлено: 20 мар 2025, 15:34
gayfullin.r
Спасибо большое за наводку!
Получилось так:

Код: Выделить всё

SELECT 
	glc.name AS tip, 
	SUM(e.field_215) AS zakaz 
FROM app_entity_21 e 
JOIN app_global_lists_choices glc ON e.field_214 = glc.id 
GROUP BY glc.name 
ORDER BY zakaz DESC;

Re: Конструктор отчётов - отображение "Имени" из глобального списка вместо ID

Добавлено: 23 мар 2025, 20:02
Antonyous99
Если в PHP это надо, то вот удобная функция, кладете в Пользовательский PHP.

Код: Выделить всё

function get_mas_from_glob_list($choice_id) {
$item_query = db_query("select * from app_global_lists_choices where id=".$choice_id);
if($item = db_fetch_array($item_query))
return $item;
}
Использование

Код: Выделить всё

$x = get_mas_from_glob_list($id); // $id - этозначение поля глобального списка 
// Наименование
$name = $x['name'];
// Значение
$val = $x['val'];

Re: Конструктор отчётов - отображение "Имени" из глобального списка вместо ID

Добавлено: 23 мар 2025, 22:26
Fait
Antonyous99 писал(а): 23 мар 2025, 20:02 Если в PHP это надо, то вот удобная функция, кладете в Пользовательский PHP.

Код: Выделить всё

function get_mas_from_glob_list($choice_id) {
$item_query = db_query("select * from app_global_lists_choices where id=".$choice_id);
if($item = db_fetch_array($item_query))
return $item;
}
Использование

Код: Выделить всё

$x = get_mas_from_glob_list($id); // $id - это значение поля глобального списка 
// Наименование
$name = $x['name'];
// Значение
$val = $x['val'];
Ага, и тут благополучно ловится Warning, если вдруг значение списка не указано. Плюс к этому не val, а value.
Нужно проверку на пустоту ещё сделать:

Код: Выделить всё

$x = get_mas_from_glob_list($id); // $id - этозначение поля глобального списка 
if (!empty($x)) {
  // Наименование
  $name = $x['name'];
  // Значение
  $val = $x['value'];
}
P.S.: Имхо, название функции, как по мне, длинновато.

Re: Конструктор отчётов - отображение "Имени" из глобального списка вместо ID

Добавлено: 23 мар 2025, 23:09
Antonyous99
Точно, ['value'].
Назавние функции ужасно длинное, и не уменьшить никак! :D
Всем: извините за неточности, спасибо, помогли исправить.
P.S. Кого достали варнинги - отключайте.