2013-08-12 4 views
1

Здравствуйте, я просмотрел эти форумы и мне нужна помощь в получении имени столбца на основе значения.SQLITE-запрос для получения имени столбца на основе значения столбца

Например, у меня есть таблица, такие как:

|Name | Column1 | Column2 | Column3| 
|-----------------------------------| 
|Peter | 100  | 120  | 92  | 
|-----------------------------------| 
|James | 110  | 105  | 88  | 
|-----------------------------------| 
|David | 90  | 112  | 98  | 

Я хочу сделать запрос Петра, где значение 92 и мне нужно запрос, чтобы вернуть колонка3.

Я знаю очень простой sql и на самом деле не использовал sqlite, чтобы понять его в глубину.

Я искал и нашел лучшее, что я нашел, это тема, которая имеет решение, которое работает на mysql: Get column name dynamically by Specific row value.

Я проверил это, и он делает именно то, что я хотел бы. Конечно, это не для sqlite.

Мне нужно знать, можно ли это сделать с помощью sqlite, и если да, то какой правильный синтаксис? Снова я знаю очень простой SQL.

Если у кого есть какие-либо советы/советы, я ценю это.

+0

Сколько столбцов в таблице? – peterm

+1

Какой язык программирования вы используете для доступа к SQLite? SQLite имеет встроенный метод для получения имени столбца из столбца набора результатов, поскольку он отслеживает исходный столбец, по крайней мере, с помощью простых запросов SELECT и JOIN. – Anurag

+0

Я забыл упомянуть, что я развиваюсь на C# и используя поставщик ADO.NET 2.0 для SQLite (http://sourceforge.net/projects/sqlite-dotnet2/), который я давно загрузил. Если есть лучшие варианты, чем тот, который я использую, я все уши, но до сих пор он отлично работает. Думаю, мне придется искать этот встроенный метод, о котором вы упомянули, мне было просто любопытно, если кто-нибудь знает хороший способ сделать это. В худшем случае я могу получить полный результат и сделать кодирование в приложении, чтобы делать то, что хочу, но скорее сделаю это на конце SQL. – SmalekTF

ответ

1

, если столбцы немногочисленны и имена фиксированных вы могли бы использовать это: -

select case when col1 == 92 then col1 
      when col2 == 92 then col2 
      when col3 == 92 then col3 
     end 
    from tab; 
+0

Есть 18 столбцов, поэтому может быть немного уродливым, хотя это будет еще вариант. Благодарю. – SmalekTF

+0

В этом случае и, возможно, даже в противном случае @Anurag предложил правильный подход для этого. – Himanshu

+0

Я пробовал заявление sql, опубликованное выше, и получить ошибку, является ли синтаксис правильным для sqlite3? – SmalekTF

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