2015-01-22 2 views
0

У меня очень маленькая база данных, в которой мне нужно вернуть поле из определенной строки.Как я могу выбрать N-я строка группы полей?

Моя таблица выглядит следующим образом (упрощенный)

Material_Reading Table 

pointID Material_Name 
123  WoodFloor 
456  Carpet 
789  Drywall 
111  Drywall 
222  Carpet 

Мне нужно, чтобы иметь возможность сгруппировать их вместе и увидеть различные виды (WoodFloor, ковры и гипсокартонные) и должен быть в состоянии выбрать, какой из них Я хочу и вернуть. Таким образом, мой оператор select поместил бы разные типы в список, а затем я мог бы иметь переменную, которая могла бы выбрать одну из строк - 1, 2, 3, например.

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

То, что я пытался до сих пор:

SELECT DISTINCT Material_Name FROM MATERIAL_READING WHERE Room_KF = $roomVariable 

Это работает и возвращает список всех моих имен материалов, находящихся в помещении, указанном в переменной номера. Но я не могу получить конкретную информацию, указав номер строки.

Я попытался с помощью LIMIT 1 OFFSET 1. Возможно, не поддерживается Filemaker или я делаю это неправильно, я пытался это так - он выдает ошибку:

SELECT DISTINCT Material_Name FROM MATERIAL_READING WHERE _Room_KF = $roomVariable ORDER BY Material_Name LIMIT 1 OFFSET 1 

Я могу использовать ORDER BY как это:

SELECT DISTINCT Material_Name FROM MATERIAL_READING WHERE Room_KF = $roomVariable ORDER BY Material_Name 
+1

какая база данных ??? –

+2

Если вы не предоставили выражение 'ORDER BY', то нет такой вещи, как' nth row'. –

+0

Это база данных filemaker, я использую функцию ExecuteSQL, которая принимает многие команды SQL, но мне трудно найти то, что все поддерживается. –

ответ

1

в MSSQL

SELECT DISTINCT Material_Name 
FROM MATERIAL_READING 
WHERE _Room_KF = 'roomVariable' 
ORDER BY Material_Name 
OFFSET N ROWS 
FETCH NEXT 5 ROWS ONLY 

, где N-> из которого строка делает, чтобы начать

X-> нет строк для извлечения, которые были начаты с (N + 1 строка)

+0

OP запросил Filemaker. –

+0

Спасибо, что это был в основном ответ. Я был в состоянии google FETCH и OFFSET, и его поддерживал Filemaker - последний рабочий код: SELECT DISTINCT Material_Name FROM MATERIAL_READING WHERE \ "_ Room_KF \" =? ORDER BY Material_Name OFFSET 0 ROWS FETCH FIRST 1 ROWS ТОЛЬКО неизвестно, почему FileMaker требует только часть «ROWS ONLY», но она работает! –

+0

Я не думаю, что этот синтаксис будет работать в MSSQL, то есть SQL Server ... – ig0774

Смежные вопросы