powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вложенные group by
8 сообщений из 8, страница 1 из 1
Вложенные group by
    #38542735
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Вложенные". Скрипт форума не дал создать тему с кавычек.

Упрощенный запрос который по замыслу должен выдать уникальные значения stuff_body из того, что уже сгруппировано по pt.article_id, но обламывает замысел:

select count(*) as `t`, `stuff_body`.`stuff_name` as `stuff_body`
from `Some_Products_Table` as `pt`

inner join `Article` as `art`
using(`article_id`)

left join `list_stuff_table` as `stuff_body`
on `stuff_body`.`stuff_id`=`pt`.`stuff_body_id`

where `art`.`blocked`+0 <> 2
group by `pt`.`article_id`, `stuff_body`
order by 1 asc;

А вот так все работает как предусмотрено

select count(*) as `t`, `stuff_body`.`stuff_name` as `stuff_body`
from `Some_Products_Table` as `pt`

inner join `Article` as `art`
using(`article_id`)

left join `list_stuff_table` as `stuff_body`
on `stuff_body`.`stuff_id`=`pt`.`stuff_body_id`

where `art`.`blocked`+0 <> 2
group by `stuff_body`
order by 1 asc;

но подсчет возвращает stuff_body тотально для всех артикулов, а не только тех, которые находятся в таблице Some_Product_Table

Машинально я могу изменять только от select и до начала перечисления ресурсов (полей) и конец запроса, после group by `pt`.`article_id`. Середина приходит в процедуру (на пхп) готовым текстом.

За полчаса поисков так и не удалось выяснить определенно - возможно ли такое вообще.

Проверял и с distinct'ами всякими и менял местами колумны в группе и все такое - бестолку. Выдает ровно то, что по первой группировке.
...
Рейтинг: 0 / 0
Вложенные group by
    #38542736
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, отформатировать забыл, а редактуры нет... сорри.
...
Рейтинг: 0 / 0
Вложенные group by
    #38542791
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot debloggerподсчет возвращает stuff_body тотально для всех артикулов, а не только тех, которые находятся в таблице Some_Product_Table[/quot]Ну дык укажи конкретное поле, а не абстрактную звёздочку.
...
Рейтинг: 0 / 0
Вложенные group by
    #38542816
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Указывал. Эквипенисуально, потому что там ровно 1 поле и запрашивается. Больше и подсчитывать нечего.
...
Рейтинг: 0 / 0
Вложенные group by
    #38542818
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Структуру таблиц (только нужные поля) и вменяемую постановку задачи в студию.
...
Рейтинг: 0 / 0
Вложенные group by
    #38542829
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Это будет телега на три экрана. Там выдается 25 полей из 12 таблиц суммарно полей на 40, вы неделю только смотреть будете буквы.

Процедурно я давно сделал. Но подумал путь уж СУБДе пашет. А она не хочет.

На словах суть такова. Есть таблица Артикулов и есть наследующая артикулы таблица продуктов. Артикулы можно директом выбирать по категории (например так и делается при формировании нафигации по артикулам и там все легко подсчитывается сколько каждая категория имеет), но когда наследник соединен с наследодателем категории не нужны - так все выбирается по отношению. Ну а поскольку выбирается там дохренища всего, то применяется группировка по отношению к наследнику. Ну вот, теперь к этой кагбе первичной группировке я захотел добавить еще одну и обломился.
...
Рейтинг: 0 / 0
Вложенные group by
    #38542836
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле stuff_name, или как там - из первичной таблицы соединения, по которой все и группируется. Если я выведу какое-то поле наследодателя - из артикулов - все будет внешне правильно. Я его не вывожу и выглядит неправильно. В общем малоценка, хрен с ней. Пусть пхп пыхтит.

Без подсчета, тупо добавить distinct после select - все прекрасно дистинктируется без дополнительной группировки. С NULL, конечно, но это не проблема, есть array_filter() на то.
...
Рейтинг: 0 / 0
Вложенные group by
    #38543126
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerЭто будет телега на три экрана. Там выдается 25 полей из 12 таблиц суммарно полей на 40, вы неделю только смотреть будете буквы.
То есть слова "только нужные поля" я, по-твоему, написал так, чисто поржать?
Не можешь почистить - создай адекватную модель. Которую потом сможешь отмасштабировать на свою ситуацию без потерь.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вложенные group by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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