Задавайте вопросы, мы ответим
Вы не зашли.
День добрый, помогите реализовать сложный запрос.
Есть 3-и таблицы
groups: (id, title, content)
projects: (id, group_id, title, content )
images: (id, project_id, thumbnail)
Как составить запрос который сформирует массив группы, в каждой группе будет массив из последние 9 проектов принадлежащей группе (group_id), в каждом проекте последнее изображение принадлежащее проекту(project_id).
реализовал это на php но понимаю что это не то...
Неактивен
Неактивен
Почемуто у меня ошибка:
Error Number: 1054
Unknown column 'x' in 'where clause'
SELECT * FROM groups JOIN items ON groups.id=items.group_id WHERE @i<=@n AND IF(@p=x, @i:=@i+1,(@i:=0) OR (@p:=x));
Неактивен
А разве у вас в таблицах groups или items есть колонка x ??
Что вы хотите получить с помощью запроса?
Неактивен
В место x я подставляю groups.id но не получаю желанного результата (понимаю что пока без таблицы images)
Мне нужно получить такой массив:
Неактивен
Неактивен
Спасибо Вам я понял, а возможно ли получить результат с подтаблицей, потому что в результате не присутствуют title и content из таблицы groups?
и не будет ли ошибки если group_id будут не по порядку например (7, 7, 18, 18, 18, 4, 4, 4, 4)
Неактивен
Street85 написал:
Спасибо Вам я понял, а возможно ли получить результат с подтаблицей, потому что в результате не присутствуют title и content из таблицы groups?
Не понял, что вы подразумеваете под терминов "подтаблица".
Чтобы в результате присутствовали нужные поля из таблицы groups, нужно выбирать не из таблицы projects, а из объединения (join) таблиц projects и groups.
А ещё лучше сначала выбрать id нужных проектов, а потом по ним выбирать все остальные данные. ( http://sqlinfo.ru/forum/viewtopic.php?pid=19785#p19785 )
Street85 написал:
и не будет ли ошибки если group_id будут не по порядку например (7, 7, 18, 18, 18, 4, 4, 4, 4)
Если вы внимательно посмотрите на приведенный мной пример, то увидите, что в исходных данных group_id идут не по порядку, и, именно, поэтому нужен подзапрос, в котором происходит их сортировка.
Неактивен
подтаблица - вложенная таблица
мне нужно выбрать все группы,
Неактивен
Честно говоря, термин "вложенная таблица" не прояснил ситуацию, а последнее сообщение в целом так ещё более запутало.
Насколько я понял исходную задачу - нужно выбрать по 9 последних проектов из каждой группы, проекту должна соответствовать последняя картинка из принадлещащих данному проекту и текстовое описание группы. Если так, то механизм решения следующий:
1. из таблицы проектов выбираете нужные id проектов
2. таблицу проектов объединяете с группами и рисунками и по найденным в пункте первом id получаете нужную вам информацию.
Если нужно что-то иное (или не получается), то приводите тестовые данные по десятку строк на таблицу и желаемый результат выборки.
Неактивен