Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Select возвращает не все данные / 5 сообщений из 5, страница 1 из 1
04.01.2010, 19:52
    #36397096
Luka_mal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select возвращает не все данные
Имеется таблица в базе sqlite3

CREATE TABLE attr (
cid INTEGER,
fid INTEGER,
adr_id INTEGER,
attr TEXT
)
к ней индекс
CREATE INDEX attr_cid_fid_adr_id on attr (cid,fid,adr_id)

Выполняется такой селект из php
select * from attr where cid=3439 and fid=1700
возвращаются следующие значения

cid fid adr_id attr
3439 | 1700 | 1 |
3439 | 1700 | 2 |
3439 | 1700 | 3 |
3439 | 1700 | 4 |
3439 | 1700 | 5 |

хотя в базе имеются вот такие записи

cid fid adr_id attr
3439 | 1700 | 0 | розничная торговля
3439 | 1700 | 1 |
3439 | 1700 | 2 |
3439 | 1700 | 3 |
3439 | 1700 | 4 |
3439 | 1700 | 5 |

почему селект отдаёт пять строк, а не шесть не могу понять?
...
Рейтинг: 0 / 0
04.01.2010, 22:25
    #36397255
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select возвращает не все данные
Попробовать:
1) получить дамп таблицы и удостовериться, что пропущенная
запись на самом деле содержит целые 3439 и 1700 в полях.
2) сделать REINDEX для индекса.
...
Рейтинг: 0 / 0
05.01.2010, 06:43
    #36397456
Luka_mal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select возвращает не все данные
Dmitry ArefievПопробовать:
1) получить дамп таблицы и удостовериться, что пропущенная
запись на самом деле содержит целые 3439 и 1700 в полях.
2) сделать REINDEX для индекса.


1) в дампе эта запись существует!
2) reindex не помог.

При использовании программы SQLite Administrator я вижу все эти записи по этому вопрос и возник.
Ещё выяснилось, что при замене в столбце adr_id 0 на 6 (или другое число) в запросе недостающая строка начинает появляться.
Тупик полнейший не знаю, что делать???
...
Рейтинг: 0 / 0
05.01.2010, 08:53
    #36397489
Luka_mal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select возвращает не все данные
как вышел из ситуации..

создал копию таблицы, но поменял порядок столбцов

CREATE TABLE attr2 (
cid INTEGER,
fid INTEGER,
attr TEXT,
adr_id INTEGER
)

вновь созданную таблицу заполнил данными из исходной

insert into attr2 (cid, fid, attr, adr_id) select cid, fid, attr, adr_id from attr

удалил все пустые записи в столбце attr2

delete from attr2 where attr=""

удалил таблицу attr (для надёжности)

drop table attr

создал её заново только порядок столбцов оставил как в таблице attr2

CREATE TABLE attr (
cid INTEGER,
fid INTEGER,
attr TEXT,
adr_id INTEGER
)

и залил обратно инфу из таблицы attr2

insert into attr (cid, fid, attr, adr_id) select cid, fid, attr, adr_id from attr2

удалил таблицу attr2

drop table attr2

не могу сказать правильно это или нет, но работает!
надеюсь такие манипуляции в будущем не аукнутся....
...
Рейтинг: 0 / 0
05.01.2010, 16:14
    #36397990
Luka_mal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select возвращает не все данные
Что бы понять, что ты дубина нужно потратить на это три дня.
Не правильное написание скрипта приводило к неправильному извлечению инфы!!!!!
Вопрос снят.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Select возвращает не все данные / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]