Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вложенные group by / 8 сообщений из 8, страница 1 из 1
29.01.2014, 20:26:37
    #38542735
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные group by
"Вложенные". Скрипт форума не дал создать тему с кавычек.

Упрощенный запрос который по замыслу должен выдать уникальные значения 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
29.01.2014, 20:27:15
    #38542736
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные group by
Блин, отформатировать забыл, а редактуры нет... сорри.
...
Рейтинг: 0 / 0
29.01.2014, 21:13:23
    #38542791
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные group by
[quot debloggerподсчет возвращает stuff_body тотально для всех артикулов, а не только тех, которые находятся в таблице Some_Product_Table[/quot]Ну дык укажи конкретное поле, а не абстрактную звёздочку.
...
Рейтинг: 0 / 0
29.01.2014, 21:32:56
    #38542816
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные group by
Akina,

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

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

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

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

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


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