|
|
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
"Вложенные". Скрипт форума не дал создать тему с кавычек. Упрощенный запрос который по замыслу должен выдать уникальные значения 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'ами всякими и менял местами колумны в группе и все такое - бестолку. Выдает ровно то, что по первой группировке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 20:26:37 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
Блин, отформатировать забыл, а редактуры нет... сорри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 20:27:15 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
[quot debloggerподсчет возвращает stuff_body тотально для всех артикулов, а не только тех, которые находятся в таблице Some_Product_Table[/quot]Ну дык укажи конкретное поле, а не абстрактную звёздочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 21:13:23 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
Akina, Указывал. Эквипенисуально, потому что там ровно 1 поле и запрашивается. Больше и подсчитывать нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 21:32:56 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
Так. Структуру таблиц (только нужные поля) и вменяемую постановку задачи в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 21:35:54 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
Akina, Это будет телега на три экрана. Там выдается 25 полей из 12 таблиц суммарно полей на 40, вы неделю только смотреть будете буквы. Процедурно я давно сделал. Но подумал путь уж СУБДе пашет. А она не хочет. На словах суть такова. Есть таблица Артикулов и есть наследующая артикулы таблица продуктов. Артикулы можно директом выбирать по категории (например так и делается при формировании нафигации по артикулам и там все легко подсчитывается сколько каждая категория имеет), но когда наследник соединен с наследодателем категории не нужны - так все выбирается по отношению. Ну а поскольку выбирается там дохренища всего, то применяется группировка по отношению к наследнику. Ну вот, теперь к этой кагбе первичной группировке я захотел добавить еще одну и обломился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 21:47:19 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
Поле stuff_name, или как там - из первичной таблицы соединения, по которой все и группируется. Если я выведу какое-то поле наследодателя - из артикулов - все будет внешне правильно. Я его не вывожу и выглядит неправильно. В общем малоценка, хрен с ней. Пусть пхп пыхтит. Без подсчета, тупо добавить distinct после select - все прекрасно дистинктируется без дополнительной группировки. С NULL, конечно, но это не проблема, есть array_filter() на то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 21:56:03 |
|
||
|
Вложенные group by
|
|||
|---|---|---|---|
|
#18+
debloggerЭто будет телега на три экрана. Там выдается 25 полей из 12 таблиц суммарно полей на 40, вы неделю только смотреть будете буквы. То есть слова "только нужные поля" я, по-твоему, написал так, чисто поржать? Не можешь почистить - создай адекватную модель. Которую потом сможешь отмасштабировать на свою ситуацию без потерь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 10:07:30 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38542836&tid=1835318]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 378ms |

| 0 / 0 |
