![]() |
|
v7: Sqlite Почему Select max() where= возвращает строку? | ☑ | ||
---|---|---|---|---|
0
Aleksey
27.04.12
✎
02:29
|
Не могу понять почему запрос
Запрос.ВыполнитьЗапрос("Select max(id) from Журнал Where Код='"+ИмяФайла+"'") возвращает 1 строку при пустом журнале? Т.е. данных нет ни то что с таким кодом а вообще нет, т.е. Запрос.ВыполнитьЗапрос("Select id from Журнал Where Код='"+ИмяФайла+"'") возвращает 0 строк |
|||
1
Aleksey
27.04.12
✎
02:30
|
Собственно нужно просто получить последний id с таким кодом получается нужно через order и limit это делать?
|
|||
2
Рэйв
27.04.12
✎
02:36
|
Он правильно возвращает и логично.
Это NULL :) |
|||
3
Aleksey
27.04.12
✎
02:41
|
(2) Ну так обычный же запрос без max Null не возвращает же
|
|||
4
Aleksey
27.04.12
✎
02:41
|
пока поменял запрос на ("Select Статус from Журнал Where Код='"+ИмяФайла+"' order by id limit 1")
|
|||
5
Рэйв
27.04.12
✎
02:45
|
Select max(id)
я вообще удивляюсь. Группировочная функция есть.А Группируемых полей нет..Это так положено?. |
|||
6
Aleksey
27.04.12
✎
02:48
|
(5) А какие поля писать, если нужно тупо максимальный ID по определенному коду GROUP BY Код?
|
|||
7
Рэйв
27.04.12
✎
02:50
|
ну Код и писать.
Это я вообщето п скульному думаю. Может там у вас по эс плюс другя логикак, не знаю |
|||
8
Рэйв
27.04.12
✎
02:50
|
не пользовался
|
|||
9
Aleksey
27.04.12
✎
02:51
|
(7) А причем ту 1Срр если речь о Sqlite
|
|||
10
Рэйв
27.04.12
✎
02:53
|
(9)Тоже не пользовался, но точно знаю - Если ты одному полю задаешь MAX, то хоть одно(Не его) нужно включить в GROUP
|
|||
11
Рэйв
27.04.12
✎
02:54
|
даже не "то хоть одно", а все
|
|||
12
Aleksey
27.04.12
✎
02:58
|
Добавил GROUP BY стал возвращать 0 строк как и ожидается.
|
|||
13
spock
27.04.12
✎
07:08
|
(10)Это какой-то скуль из альтернативной реальности?
"Если ты одному полю задаешь MAX, то хоть одно(Не его) нужно включить в GROUP " - если используется GROUP, то MAX будет в пределах значения этой группировки. Дальше объяснять? |
|||
14
orefkov
27.04.12
✎
08:42
|
(10)
Это не так. Если ни одно поле не включено, значит свернет по всем. (0) Все правильно возвращает. Ты просишь максимальное значение - пожаста, тебе выдает NULL. |
|||
15
orefkov
27.04.12
✎
08:44
|
(1)
И таки да, кошернее это делать через order by ... desc limit 1 Так точно можно быть уверенным, что "оптимизатор" не запутается. |
|||
16
orefkov
27.04.12
✎
08:52
|
(4)
Не понял - так у тебя не max, а min вернет. Надо order by id desc Ну и понятно, что должен быть индекс (Код,id) |
|||
17
Aleksey
27.04.12
✎
10:15
|
(16) С Desc согласен
А для индексов есть конструкция вида CREATE INDEX IF NOT EXISTS |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |