Номер заявки, тип данных REAL, при выводе в стрингтабл номер отображается с десятичным. Т.е. например 365.0
Как этого избежать? Выставить тип INTEGER ?
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
user_asm писал(а): Выставить тип INTEGER |
|||
карма: 25 |
|
Ответов: 952
Рейтинг: 4
|
|||
Добавил в таблицу пару столбцов. В один из них вставил одинаковые данные. Второй пуст.
Сделал вакуум. Внес для теста пару записей. Форма Редактировать с новыми записями работает корректно. А со старыми записям беда - форма Редактировать пуста. Т.е. при запросе получается следующее select * FROM base WHERE (nomer="532")AND(dataz="") Похоже что из-за пустого dataz и не идет запрос. Как выйти из положения? Думал внести во все старые записи одинаковую дату, но как-то не очень такое решение. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Если nomer integer, то select * FROM base WHERE (nomer=532)AND(dataz="");
Но если у тебя есть конкретный nomer, то нахрена тебе dataz ? Или у тебя 532 на все записи ? Тогда так:
|
|||
карма: 25 |
|
Ответов: 952
Рейтинг: 4
|
|||
Не выбирает так:
select * FROM base WHERE (nomer=532)AND(dataz=""); Запрос проходит без ошибок но ничего не выдает. Если заполнить пустой столбец одинаковыми данными, типа 2012-01-01, то запрос проходит и возвращает что нужно. |
|||
карма: 0 |
|
Ответов: 758
Рейтинг: 112
|
||||||||||
Вопрос к гуру
code_26195.txt 1. Каким запросом можно вывести все названия из tab1 и одновременно sum(tab2.amount) То есть получить что-то такое
Прошу перевести данный пример на индекс (один ко многому) |
||||||||||
карма: 1 |
| |||||||||
файлы: 1 | code_26195.txt [1.7KB] [401] |
Ответов: 171
Рейтинг: 19
|
|||
miver,
|
|||
карма: 0 |
| ||
Голосовали: | miver, Tad |
Ответов: 758
Рейтинг: 112
|
|||
Borka, а можно немного пояснить что к чему. В часности "tab1 LEFT JOIN tab2 ON" и почему нет WHERE
|
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
miver писал(а): почему нет WHEREПосле ON идёт условие и склейка таблиц JOIN, LEFT указывает с какой стороны приклеивать. |
|||
карма: 1 |
|
Ответов: 171
Рейтинг: 19
|
|||
miver писал(а): а можно немного пояснить что к чему. В часности "tab1 LEFT JOIN tab2 ON" и почему нет WHEREВаш изначальный запрос
INNER JOIN выводит данные с совпадающими id В этом случае можно использовать или ON или WHERE нет особой разницы А вот в случае с LEFT JOIN который объединяет все данные из таблиц , нужно строго следовать синтаксису и использовать ON (Это связано с тем что WHERE как то не так обрабатывает NULL который появляется при объединении таблиц где условия не совпадают... но это знать необязательно ) |
|||
карма: 0 |
| ||
Голосовали: | Konst, miver |
Ответов: 16884
Рейтинг: 1239
|
|||
miver, и на пальцах:
Как написано в строке запроса FROM tab1 LEFT JOIN tab2 - ко всем значениям левой таблицы(tab1 - написано слева от слова JOIN), присоединить данные из правой таблицы (tab2 - написано справа от слова JOIN). WHERE (где) - возвращает результат запроса только когда результат сравнения TRUE. ON (на) - возвращает результат запроса когда результат сравнения TRUE, или подставляет NULL при невозможности выполнить сраавнение. |
|||
карма: 25 |
| ||
Голосовали: | miver |
Ответов: 758
Рейтинг: 112
|
|||
Всем большое спасибо.
Пожалуйста, объясните также на пальцах про индексы. Теоретически я знаю, как их сделать. А на практике не понимаю зачем они и в каких случаях используются. |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-22 09:04:41 |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
miver, на пальцах
Индексные файлы используются движком теоретически для ускорения доступа к данным таблицы. При создании колонки как PRIMARY KEY или UNIQUE для этих колонок автоматом создаются индексные файлы. Командой CREATE INDEX можно создать индексный файл для любой колонки. Не всегда происходит ускорение доступа - чаще замедление при операциях INSERT, DELETE, UPDARE и при создании индексного файла для текстовых колонок с очеь длинными строками. |
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Tad, слушай -- а как мне выставить запрос с условием. Предпложим -- есть две таблицы, из одной получаем индекс и берем значение в другой таблице по полученному индексу, но если индекс не больше какого-то значения, а иначе от индекса надо отнять какое-то значение. По типу условия -- если полученный индекс не больше определенного значени, то используем индекс "как есть", иначе -- отнимаем от индекса какое-то значение. Реально ли это сделать в одном запросе, или надо лепить дополнительные компоненты условия
|
|||
карма: 22 |
|