Группировка и сортировка по номеру, нужен запрос.

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Группировка и сортировка по номеру, нужен запрос.

Сообщение Gmp » 12.08.2006 (Сб) 12:43

Код: Выделить всё
strSQL = "SELECT Dat FROM Tabl GROUP BY Dat"
Set RecDB = New ADODB.Recordset
RecDB.Open strSQL, ConDB, adOpenStatic, adLockOptimistic


RecDB.MoveFirst
'RecDB.Sort = "ID ASC"
Do While Not RecDB.EOF
'Debug.Print RecDB.Fields("Dat")
    Set nodX = TreeView1.Nodes.Add(, , RecDB.Fields("Dat"), RecDB.Fields("Dat"), 1)
    RecDB.MoveNext
Loop

RecDB.Close
Set RecDB = Nothing


Если сделать "SELECT ID, Dat FROM Tabl GROUP BY Dat ORDER BY ID" - такой запрос вобще ничего не возвращает.

Пытаюсь сгруппировать элементы и отсортировать их по номеру.

База Access2000

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 12.08.2006 (Сб) 13:57

Есть подозрение, что ты неправильно представляешь себе, как работает GROUP BY и что он делает.

Соответственно, будет лучше, если ты расскажешь, что тебе нужно, нежели покажешь, какой именно код у тебя работает не так, как ты ожидаешь.

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 12.08.2006 (Сб) 15:16

Ennor
У меня GROUP BY группирует элементы таблицы:
а
а
а
б
б
б
б
на выходе
а
б

К каждому элементу присвоен уникальный ID
ID Dat
1 а
2 а
3 а
4 б
5 б
6 б
7 б

Нужно выводить это отсортированным по ид

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.08.2006 (Сб) 15:50

После группировки, разумеется, ID теряет смысл. Сам же показал это в этом посте. И не понял.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 12.08.2006 (Сб) 16:17

GSerg
Тогда вопрос, можно это как-то по другому отсортировать, чтобы сначала шли те у которых ид меньше? У меня они в тривью сейчас в беспорядке выводятся.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.08.2006 (Сб) 16:21

Внимательно посмотри на свой предыдущий пост.
Увидь там, как из трёх "а" получается одно. И скажи: у этого "а" какой ID?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 12.08.2006 (Сб) 17:20

GSerg
И какой выход из ситуации есть?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.08.2006 (Сб) 17:21

Сортировать по тому, что осталось после группировки. Или добавить что-то в группировку и сортировать по нему.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 12.08.2006 (Сб) 20:44

Если сделать "SELECT ID, Dat FROM Tabl GROUP BY Dat ORDER BY ID" - такой запрос вобще ничего не возвращает.

если запрос именно в таком виде, то он не то чтобы ничего не возвращает, должен ругаться, потому как в конструкции GROUP BY должны быть перечислены все поля (именно в этом случае).
короче говоря если поле ID у тебя - счетчик, то ничего не получится.
Пытаюсь сгруппировать элементы и отсортировать их по номеру

для этого нужен ORDER BY

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 13.08.2006 (Вс) 22:31

GSerg
shady
А если их сначала отсортировать через ORDER BY, а потом сгрупировать с помощью DISTINCT или GROUP BY как будет запрос выглядеть?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2006 (Вс) 22:35

После группировки порядок записей снова будет произвольным.

Gmp
Вот смотри.
Код: Выделить всё
10 а
20 а
35 а
4  б
50 б
6  б

В каком порядке выводить - "аб" или "ба", и почему?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 14.08.2006 (Пн) 7:04

Gmp, давай покажи нормальные данные с какими ты хочешь работать, тогда будет видно. По приведенным данным ничего не получится.. (точнее получится, но только по 1 полю....)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.08.2006 (Пн) 10:23

Код: Выделить всё
SELECT
  MIN(ID) as MinID,
  Dat
FROM Tabl
GROUP BY Dat

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.08.2006 (Пн) 10:48

Konst_One
А почему не MAX?
А почему не AVG, не COUNT?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.08.2006 (Пн) 10:49

ему же минимальный нужен :lol:

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 14.08.2006 (Пн) 19:33

Вобщем задачу решил добавлением еще одного поля в таблицу которое присваивает по порядку одно ид каждому кого мне надо отсортировать. :)


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 3

    TopList  
cron