Russian Qt Forum

Qt => Базы данных => Тема начата: slava_d200 от Апрель 06, 2012, 11:00



Название: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:00
прошу подсказать где закралась ошибка
вот делаю запрос:

SELECT del,GUID_id,Priznak_Gruppy,Name, 1,id  FROM Spr_Klient WHERE GUID_id = '3'
union
SELECT del,GUID_id,Priznak_Gruppy,Name,2,id FROM Spr_Klient WHERE GUID_Roditel = '3'
ORDER BY Priznak_Gruppy DESC, 4 ASC, id ASC;

последняя сортировка не выполняется по реквизиту : id ASC

картинка результата прикреплена.


Название: Re: невыполняется сортировка SQLite
Отправлено: mutineer от Апрель 06, 2012, 11:04
А где колонка с именем 4? какие у нее значения?

З.Ы. названия колонок просто пипец...


Название: Re: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:06
1 и 2

картинка значений прилагается.

по определению это можно так назвать переменная определяющая уровень вложенности
1-ый уровень
2-ой уровень


Название: Re: невыполняется сортировка SQLite
Отправлено: mutineer от Апрель 06, 2012, 11:08
ORDER BY Priznak_Gruppy DESC, 4 ASC, id ASC;

сортировка по полю 4 наличествует, значений на картинке не видно. 1 и 2 - это значения? в каких строках они такие?


Название: Re: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:13
4 - это позиция переменной в запросе.
т.к в формате запроса можно либо использовать наименования переменных либо позиция переменной в запросе.
так 4 это какраз позиция переменной в запросе.


Название: Re: невыполняется сортировка SQLite
Отправлено: mutineer от Апрель 06, 2012, 11:15
4я переменная в запросе это Name? тогда все правильно отсортировано


Название: Re: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:15
ну в общем запрос прошол правильно после того как я обозвал эту переменную.

SELECT del,GUID_id,Priznak_Gruppy,Name, 1 AS Yroven,id  FROM Spr_Klient WHERE GUID_id = '3'
union
SELECT del,GUID_id,Priznak_Gruppy,Name,2,id FROM Spr_Klient WHERE GUID_Roditel = '3'
ORDER BY Priznak_Gruppy DESC, Yroven ASC,id ASC;


Название: Re: невыполняется сортировка SQLite
Отправлено: mutineer от Апрель 06, 2012, 11:16
Запрос очень нечитабелен, оттого и ошибки


Название: Re: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:18
4я переменная в запросе это Name? тогда все правильно отсортировано

вот в этом и была ошибка
СПАСИБО.
почему то я посчитал что отсчет начинается с "0", а не с "1".


Название: Re: невыполняется сортировка SQLite
Отправлено: mutineer от Апрель 06, 2012, 11:20
4я переменная в запросе это Name? тогда все правильно отсортировано

вот в этом и была ошибка
СПАСИБО.
почему то я посчитал что отсчет начинается с "0", а не с "1".

А ты уверен что берется 4е поле из первой части запроса, а не из второй?


Название: Re: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:27
запрос то суммирующий
сортировка распространяется уже на всю выборку
что по первому запросу что по второму в целом.



Название: Re: невыполняется сортировка SQLite
Отправлено: mutineer от Апрель 06, 2012, 11:29
и в каком порядку идут поля 1 и 2 в результирующей выборке? как к ним обратиться по номеру? (и как вообще парсер запроса должен понять 1 это имя поля или его номер в выборке?)


Название: Re: невыполняется сортировка SQLite
Отправлено: slava_d200 от Апрель 06, 2012, 11:59
и в каком порядку идут поля 1 и 2 в результирующей выборке? как к ним обратиться по номеру? (и как вообще парсер запроса должен понять 1 это имя поля или его номер в выборке?)

del,GUID_id,Priznak_Gruppy,Name, 1 AS Yroven,id  вот такой порядок. т.е. как мы определили в запросе в такой последовательности она и будет считатся.

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

прилагаю формат запроса: