xShimmy
@xShimmy

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

Заголовок немного сумбурный получился, не знаю, как правильнее сформулировать.
Итак, имеются, в простом варианте, 2 таблицы, связанные по ассоциации "многие-ко-многим":
USERS
id | username
1  | Арнольд
2  | Сильвестр


SUBJECTS
id | title
1  | Математика
2  | Физика


USERS_SUBJECTS
user_id | subject_id
1       | 1
1       | 2
2       | 1


Что-то вроде этого возвращает, соответственно, только один результат из USERS_SUBJECTS (ну и глупо ожидать другого):
SELECT users.id, users.username, users_subjects.subject_id AS sid FROM users
    LEFT JOIN users_subjects ON users_subjects.user_id
GROUP BY users.id /*эта штука мне нужна*/


Собственно, для каждого юзера мне нужен список предметов, к которым он привязан. И в самом идеальном случае, чтобы это был один результат (т.е. Арнольд, который силен и в физике и в математике выдавался одной строкой со списком предметов).
Сложность в том, что структура (и общий запрос) сложнее, чем описано здесь и нужны всякие сортировки, лимиты, оффсеты и прочие group by.
Либо, если это невозможно, как в таких случаях получать информацию для списков пользователей?
  • Вопрос задан
  • 256 просмотров
Решения вопроса 2
@murrometz
Поищите join concat mysql
Ответ написан
Комментировать
@dk-web
$query="SELECT a.*, GROUP_CONCAT(DISTINCT b.subject_id) AS subject
FROM `USERS` AS a
LEFT OUTER JOIN `USERS_SUBJECTS` AS b ON a.id = b.user_id
WHERE a.id ='$id' GROUP BY a.id";

Мог ошибиться - свой запрос "прилаживал". У меня была недавно аналогичная задача.... Он конкатенирует в строку значения из таблицы users_subjects - потом explodом можно получить массив...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
Как получить несколько значений из JOIN?

JOIN это оператор. из него значения никакие нельзя получить
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы