Запрос для каждого n-го элемента в основных данных - PullRequest
1 голос
/ 31 июля 2011

Как запросить каждый элемент nTh (или только каждую секунду) в базовых данных?

Вот что я бы сделал в SQL:

SELECT * FROM TABLE_NAME 
WHERE (ROWID, 0) IN (SELECT ROWID, MOD(ROWID, N) FROM TABLE_NAME);

Спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Вы не можете.

Базовые данные не являются SQL.Сущности не являются таблицами.Объекты не являются строками.Атрибуты не являются столбцами.Отношения не объединяются.Базовые данные - это система управления графом объектов, которая может сохранять или не сохранять объектный граф, а может и не использовать SQL для этого далеко за кулисами.Попытка представить базовые данные в терминах SQL приведет к тому, что вы полностью неправильно поймете базовые данные и приведете к большим трудностям и потерянному времени.

Управляемые объекты существуют не как «элементы» в таблице, а в графе объектов, которыйэто сеть отдельных объектов, связанных отношениями, определенными в вашей модели данных.Даже если вы используете опцию хранилища SQL, фактическая физическая позиция атрибутов разложенного объекта в таблице не будет иметь ничего общего с расположением объекта в графе объектов.

Если вам нужен каждый n-й объект, вы сначала должны выполнить выборку с помощью дескриптора сортировки, упорядочивающего объекты по тем критериям, которые вы хотите в данный момент, а затем вы возьмете каждый n-й элемент массива, возвращенный выборкой.

0 голосов
/ 31 июля 2011

SELECT * FROM table_name WHERE mod (ROWID, 2) = 0

, если ROWID - это поле в таблице.Обратите внимание, что строки в таблице не имеют «порядкового номера», хотя вы можете создать порядковый номер в результате запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...