|
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
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший