webForumDet fria alternativet

Går det att hämta poster genom att ange kolumnens nummer istället för namn?

Databaser & SQL

6 svar · 311 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Säg att jag vill hämta ut kolumn 2 och 4 utan att behöva veta vad kolumnen heter.

Går det att förstå min fråga? LOL.

Något liknande sql_question = "SELECT 2,4 FROM T_list_look..." istället för "SELECT namn, adress FROM T_list_look..."

:OO

Fråga 2:

Går det att bara hämta kolumnnamnen i en tabell med en fråga?

Medlem sedan dec. 200012 464 inlägg
#2
  1. Nej.

  2. Beror på databashanterare.

Medlem sedan maj 20012 080 inlägg
#3
  1. Ok. Då får jag lösa det på annat sätt.

  2. Jag kör i detta fall MS Access.

Medlem sedan maj 20018 027 inlägg
#4

Angående fråga (1), kan jag nämna att jag har ibland sorterat resultatet med hjälp av kolumnnummer istället för kolumnnamn. Detta i en Oracle-DB. Anledningen till att jag gjorde så, var att det i några enstaka fall inte funkade med "order by <kolumnnamn>". I dessa fall löste jag problemet genom att göra "order by <kolumnnummer>". Varför jag hade det problemet, har jag ingen aning om. Jag ser inget konsekvent i det. Därav skulle man kunna tro att det i Oracle skulle gå att selectera m.a.p. kolumnnummer istället för namn. Men det går inte. Jag prövade det nyss.

Medlem sedan maj 20012 080 inlägg
#5

Oki... jag håller på att bygger ett GUI där det ska gå att ange vilka kolumner som ska visas samt i vilken ordning de ska visas. Min första tanke var att spara kolumnnummren i en tabell men det går lika bra att spara namnen direkt istället.

Behöver dock fortfarande lite hjälp med det...

Medlem sedan dec. 200012 464 inlägg
#6

Att i order by kunna ange ordningsnummer är något som de flesta DBMS stöder. Det fanns med i SQL-standarden till och med SQL-92. Det har senare tagits bort till förmån för att ange ett korrelationsnamn, dvs

select a+b as c from t order by c

Access t.ex. stöder inte ovanstående så där får man ange ordningsnummer.

Access har en systemtabell som heter msyscolumns som innehåller alla kolumnnamn.

Om du använder ADO eller något annat som bygger på OLE DB/ODBC så kan du använda openschema för att hämta tabellbeskrivningar.

Medlem sedan maj 20012 080 inlägg
#7

Såg när jag sökte att man kunde göra något liknande:

response.write rsLabelNames.fields(1).name

Detta verkar att fungera :)

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)