Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Последовательность при записи в БД


Автор: Alex_B 18.6.2007, 20:23
Есть массив A.
Каждый элемента этого массива я по порядку записываю в таблицу MySQL.

Затем мне необходимо сформировать массив B из записей в таблице MySQL.
Массив B должен быть идентичен массиву A – важна последовательность элементов.

Сейчас последовательность элементов в массива B ни как не контролируется.

Как более практично сделать такое?
(можно сделать еще одну колонку в таблице и туда записывать номер элемента в массиве A, но наверняка есть способ лучше)

Спасибо.

Автор: vasac 18.6.2007, 21:09
Поставить автоинкремент в таблице. При выборке упорядочивать по нему.

Автор: Alex_B 18.6.2007, 21:21
Цитата(vasac @ 18.6.2007,  21:09)
Поставить автоинкремент в таблице. При выборке упорядочивать по нему.

Автоинкремент стоит.

Т.е. сбой происходит не при записи а при считывании?
_________________
Сейчас пытаюсь повторить ситуацию при которой произошел сбой последовательности элементов  - и никак не получается.

Но раза три уже было - не могу понять от чего это зависит

Автор: skyboy 19.6.2007, 00:26
в запросе "ORDER BY" есть по этому автоинкременту? или "рассчитываем на СУБД"?

Автор: sTa1kEr 19.6.2007, 01:57
Цитата(skyboy @  19.6.2007,  00:26 Найти цитируемый пост)
в запросе "ORDER BY" есть по этому автоинкременту? или "рассчитываем на СУБД"? 

Если тип таблицы InnoDB и столбец с  автоинкрементом является первичным ключом, то при выборке даже без ORDER BY сортировка все равно будет по этому Primary Key. 

Автор: Alex_B 19.6.2007, 13:04
Цитата(skyboy @ 19.6.2007,  00:26)
в запросе "ORDER BY" есть по этому автоинкременту? или "рассчитываем на СУБД"?

skyboy, запрос выглядит вот так:
Код

SELECT * FROM #__glinepoints WHERE lineid='".$line->id."'


Подскажите пожалуста как добавить "ORDER BY".

Я правильно понял, что если я последовательно записываю элементы массива в таблицу с автоинкрементом, то этот автоинкремнт для каждой следующей записи будет больше чем для предыдущей? Т.е. при добавлении записей в таблицу последовательность нарушится не может?

Автор: vasac 19.6.2007, 13:39
http://phpfaq.ru/mysql
тут и про последовательность в таблице и пример с ORDER BY

Автор: Alex_B 19.6.2007, 13:48
vasac, спасибо.

Вот так сделал:
Код

SELECT * FROM #__glinepoints WHERE (lineid='".$line->id."') ORDER BY id ASC

Автор: skyboy 19.6.2007, 23:28
Цитата(sTa1kEr @  19.6.2007,  00:57 Найти цитируемый пост)
Если тип таблицы InnoDB

только в случае, когда необходимости во внешних ключах нет(реализовано на уровне логики приложения), а транзакции - не критично, в отличии от скорости, то используют, почему-то, MyISAM  smile 
Но все равно - спасибо за инфо. не знал, не знал smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)