Итак, предположим, у меня есть эта таблица с 4 столбцами:
id content parent timestamp
при этом родительский столбец ссылается на идентификатор другой записи в таблице
Я хочу сделать следующее:
Выберите первые 50 строк из таблицы в следующем порядке:
for each row,
if(parent = 0){
add row to resultset, ordered by timestamp
}
else if (parent != 0){
if parent is in the list of rows already fetched so far by the query,
add row to resultset, ordered by the timestamp
otherwise, wait until the parent gets fetched by the query
(assuming it gets fetched at all since there we're only getting the first 50 rows)
}
эта логика упорядочения несколько сложна, и мне интересно, возможно ли это сделать с помощью оператора MYSQL ORDER BY в одном запросе БЕЗ необходимости прибегать к подзапросам? Может быть, мы могли бы установить и использовать переменные? Но как будет реализован оператор ORDER BY?
order by
и довольно сложно даже с подзапросами. Извлечение поддерева из древовидной структуры будет иметь аналогичный псевдокод. А извлечение поддерева - сложная проблема. - person Gordon Linoff   schedule 07.05.2013