[SQL] denkkronkel, kan dit?

Pagina: 1
Acties:

  • MrHighStone
  • Registratie: November 2001
  • Laatst online: 03-02-2023
Ik zit met een tabel, met daarin key/value pairs. Nu zou ik graag deze key/value pairs als veldnamen met veldinhoud tonen, snappen jullie het nog :?

Voorbeeldje:

Inhoud tabel nu (op eerste regel veldnamen):
ID,Key,Value
01,k1,value1
02,k2,value2
03,k3,value3

De query moet het als volgt tonen (op eerste regel veldnamen):
k1,k2,k3
value1,value2,value3

Het resultaat is dus altijd een record, met als het ware de velden horizontaal, ipv verticaal 'getoond'.

Grote vraag is nu of het in SQL Server kan, en in welke richting ik het moet zoeken.

Een file op de A12 is nooit grappig...


Verwijderd

Als we er vanuit gaan dat een query eigenlijk altijd een tabel returnt, en dat alle velden in een kolom hetzelfde type waarde vertegenwoordigen, dan loop je al tegen problemen aan. De 'resultaten tabel' voldoet er dan namelijk niet aan.

Waar moet dit goed voor zijn?

  • Unipuma
  • Registratie: Juli 2001
  • Laatst online: 06-04-2021
Dit zal je niet lukken, althans niet met een dynamische lengte. Je kunt wel iets bedenken dat eerst drie waardes achter elkaar plaatst van de records van een tabel, en dan nogmaals erdoorheen gaat, en dit bijvoorbeeld in een temp-tabel plaatsen, maar dan moeten ook alle typen gelijk zijn of te converteren naar een gemeenschappelijk formaat.

Je moet in de gaten houden dat een database server uitleest per record. Het is een database en geen spreadsheet (waar dit makkelijker zou zijn)

So much fun, it's a miracle it isn't declared illegal: driving a motorcycle


  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 20-07 09:47
Lijkt me dat je dit beter af kan handelen met de programmeeromgeving waaruit je de database aanroept. Een soort wrapperfunctie die de nodige paren voor je ophaalt.

Verwijderd

Hangt van de DBMS af, als je iets fatsoenlijks hebt waarmee je stored procedures kan schrijven is het geen punt.

Verwijderd

Het ligt er idd aan waar je 't precies voor wilt gebruiken en of je 't niet (makkelijker) in de programmeer-omgeving kunt oplossen, zoals hierboven wordt gesuggereerd...

Als je de waarden uit de Value-kolom komma-gescheiden achter elkaar wilt krijgen, zou je bv. kunnen denken aan een (read-only forward) cursor kunnen denken.

  • rik
  • Registratie: April 2000
  • Laatst online: 26-08 19:48

rik

Als je een array vult met de resultaten, kan je daarna mbv de array de tabel gaan vullen. Of bijvoorbeeld 2 arrays ofzo. Of array in array. Zou geen probleem moeten zijn.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 25-08 15:35
Ik geloof dat ik in SQL for smarties weleens wat code hiervoor heb gezien. Het idee is dat je een tabel maakt dusdanig dat die als identity-matrix gaat fungeren. Voor de rest dus even naar de bibliotheek gaan >:)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Als je wat zoekt op de term "pivot tables" moet je denk ik wel het eea kunnen vinden op het internet. Er zijn kant en klare SP's te vinden, weet alleen niet meer waar :o

Today's subliminal thought is:


  • MrHighStone
  • Registratie: November 2001
  • Laatst online: 03-02-2023
Inderdaad, dat was het woord dat ik zocht, een pivot table, in principe is dat wat ik bedoel. Overigens, het gaat om SQL Server, dus SPROCs is geen probleem, de velden worden ook niet comma-separated getoond, maar gewoon als 'tabel' als output van de SPROC.

Nu nog uitvinden hoe ik veldnamen kan retrieven met een query...

Een file op de A12 is nooit grappig...


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Pivot tables zijn in SQLServer geimplementeerd mbv 'cubes', die je kunt maken met de OLAP functionaliteit van SQLServer. Dit is een functionaliteit die meestal niet wordt geinstalleerd, dus kijk wel eerst even of jouw server voorzien is van de OLAP spullen.

Pivot tabellen zijn ook bekend onder de illustere naam 'draaitabellen', en worden in Excel veel toegepast bij het creeeren van 3D grafieken.

Fieldnames retrieven mbv van een query is simpel:
SELECT INFORMATION_SCHEMA.COLUMNS.*
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'mytablename'

zelf dan nog even de columns selecteren in je query

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1