2013-06-24 7 views
-1

Я пытаюсь извлечь из моей базы данных sql без необходимости загружать ее в var и вытягивать элементы, которые я хочу, с помощью цикла for.получение определенного индекса из sql

Как я могу получить 5 элементов в 5-м индекса «» 5 «» десятые индекса ...

Это то, что я делаю не это способ хака.

function get_db(a) { 
index_count=a 

db.transaction(
    function(tx) { 

    var rs = tx.executeSql('SELECT * FROM Greeting'); 
    var r="" 

    if (up_check === 0){ 
     index_count = index_count +4 
     } 
     r += rs.rows.item(index_count).salutation + ": " + rs.rows.item(index_count).salutee + "\t\t" 
    }) 
return r 
} 

Я бы в идеале хотели бы получить что-то вроде

var rs = tx.executeSql('SELECT * FROM index_count (and the next for items) Greeting'); 

ответ

1

Если вы SQL Server 2005 или выше вы можете использовать ROW_NUMBER().

Что-то вроде этого (Freehand):

SELECT *, ROW_NUMBER() OVER(ORDER BY [youordercolumns]) AS [RowNum] 
FROM [youtable]  
WHERE [RowNum] BETWEEN @index AND @index + 4 
1

Это действительно зависит от того, что сервер базы данных вы используете.

Например, MySQL поддерживает очень простой, но нестандартное решение:

SELECT * FROM Greeting 
LIMIT 5 OFFSET yourStartingIndex 

Другие серверы поддерживают один или несколько способов выполнения 'предел со смещением.

стандарт SQL предоставляет три способа:

  • Использование OFFSET и FETCH FIRST: (с SQL: 2008)
SELECT * 
FROM Greeting 
OFFSET yourStartingIndex ROWS 
FETCH FIRST 5 ROWS ONLY 
  • Использование функции окна :(начиная с SQL: 2003)
SELECT * FROM (
    SELECT 
    ROW_NUMBER() OVER (ORDER BY YourOrderColumns ASC) AS rownum, 
    columns 
    FROM tablename 
) AS foo 
WHERE rownum > yourStartingIndex AND rownum <= (4+yourStartingIndex) 
  • Использование курсора:
DECLARE cursor-name CURSOR FOR ... 
OPEN cursor-name 
FETCH RELATIVE number-of-rows-to-skip ... 
CLOSE cursor-name 

ССЫЛКИ: http://troels.arvin.dk/db/rdbms/#select-limit-offset