powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу найти нигде примера, прошу помощи.
2 сообщений из 2, страница 1 из 1
Не могу найти нигде примера, прошу помощи.
    #39807324
dvmodem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Пытаюсь сделать запрос к БД MOODLE. В базе есть 2 таблицы:
1) Пользователи mdl_user.
2) Таблица дополнительных полей пользователей mdl_user_info_data. (MOODLE позволяет расширять сведения о пользователях через таблицу дополнительных полей). Сколько дополнительных полей - столько и строк в таблице mdl_user_info_data на одного пользователя. В моем случае 3 дополнительных поля (пол, дата рождения, образование). Несмотря на разный смысл всех допполей - они символьные. Записи в таблице пользователей - уникальны.

Основные поля таблицы mdl_user:
ID bigint(10)
USERNAME varchar(100)
password varchar(255)
firstname varchar(100)
lastname varchar(100)
и т.д.

Основные поля таблицы mdl_user_info_data:
id bigint(10)
userid bigint(10)
fieldid bigint(10)
data longtext
dataformat tinyint(2)

Связь: mdl_user.id = mdl_user_info_data.userid
fieldid - идентификатор назначения поля. В моем случае это: 2, 3, 4. Т.е. имеется на каждого пользователя 3 записи со значениями fieldid= 2, 3, 4.
ВОПРОС: Существует ли какой-нибудь запрос, чтобы выбрать N записей из таблицы пользователей и присоединить к ним поля data из таблицы дополнительных полей так, чтобы они были в виде столбцов в результате запроса? (в моем случае 3 столбца)

Заранее спасибо
...
Рейтинг: 0 / 0
Не могу найти нигде примера, прошу помощи.
    #39807342
dvmodem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, вроде получилось так - через подзапросы:
SELECT mdl_groups_members.userid, mdl_groups.idnumber, mdl_user.lastname, mdl_user.firstname, mdl_user.middlename, mdl_course.shortname, mdl_course_categories.name,
(SELECT data FROM mdl_user_info_data WHERE fieldid = 2 and userid = mdl_user.id),
(SELECT data FROM mdl_user_info_data WHERE fieldid = 3 and userid = mdl_user.id),
(SELECT data FROM mdl_user_info_data WHERE fieldid = 4 and userid = mdl_user.id)
FROM mdl_groups_members
INNER JOIN mdl_user
ON mdl_user.id = mdl_groups_members.userid
INNER JOIN mdl_groups
ON mdl_groups.id = mdl_groups_members.groupid
INNER JOIN mdl_course
ON mdl_course.id = mdl_groups.courseid
INNER JOIN mdl_course_categories
ON mdl_course_categories.id = mdl_course.category
INNER JOIN mdl_user_info_data
ON mdl_user_info_data.userid = mdl_user.id
WHERE mdl_groups_members.groupid = 3
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу найти нигде примера, прошу помощи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]