[SQL] Kolomnaam zoeken bij waarde

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 17-09 16:55
Is het in SQL mogelijk om een kolomnaam te zoeken aan de hand van een bepaalde waarde ?
Ik heb dus bijv. een tabel 'Users':
code:
1
2
3
4
5
Voornaam    Achternaam  Password
------------------------------------
Maikel  van Amelsfort   blabla
Kees      Jansen        keesje
etc.

Nu wil ik dus dat al ik bijv. 'Maikel' invul, dat ie dan terug komt met 'Voornaam'.
En dan dus het liefst zonder eerst alle gegevens uit de database te halen en ze dan zelf allemaal doorlopen.
Dit moet overigens allemaal in Delphi 6.

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
In principe is dit niet mogelijk zonder de hele db door te lopen, heel sec gezegt zou je structuur namelijk niet kloppen als je dit wilt, klink gek maar dan zou de kolomnaam eigenlijk de naam van de persoon moeten hebben en de value de kolomnaam die je nu gebruikt moeten zijn :)

Kortom het kan gerust wel maar je zal wel behoorlijk zware queries moeten doen.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Hoe zo zou de structuur niet kloppen? Voor een zoekfunctie kan het namelijk best makkelijk zijn.
Ik heb ooit eens iets gelezen over full-text search, maar of je daar dit soort dingen mee kunt doen weet ik niet.

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 17-09 16:55
Op dinsdag 23 oktober 2001 23:25 schreef raptorix het volgende:
In principe is dit niet mogelijk zonder de hele db door te lopen, heel sec gezegt zou je structuur namelijk niet kloppen als je dit wilt, klink gek maar dan zou de kolomnaam eigenlijk de naam van de persoon moeten hebben en de value de kolomnaam die je nu gebruikt moeten zijn :)

Kortom het kan gerust wel maar je zal wel behoorlijk zware queries moeten doen.
Als ik de structuur om zou gooien, zou ik wel erg veel tabellen krijgen.
Ik zie op Internet alleen meet SQL Server verschijnen als ik zoek op 'SQL full text search', maar geen Access.
De database komt later wel op een SQL Server, maar voor het testen gebruik ik nog ff gewoon Access.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Access ondersteunt geen full-text search, dus dat is jammer. Als hebt uitgezocht of en hoe dit kan met full-text search is het het verstandigst om het direct met SQL server te implementeren.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17-09 08:12

Crazy D

I think we should take a look.

Ik vraag me eigenlijk meer af waarom je dat zou willen :)

Exact expert nodig?


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Je snapt mijn punt denk ik niet helemaal maar dat terzijde, maar je zou een script kunnen maken die dit doet:

maak een cursor die uit de system tables alles kolomnamen haalt met bijbehorende table name, vervolgens ga je binnen deze cursor een select uitvoeren met de searchvalue op betreffende kolomnaam/table. Via rowcount kan je checken of er een hit was, zoja, dan kan je bijvoorbeeld de naam van betreffende kolom in een string, dan wel tijdelijke table opslaan. Ik hoop dat je dit principe duidelijk is.

Echter zoals al opgemerkt zijn dit soort zoekacties niet echt gebruikelijk, zeker op een db met veel rows kan dit nogal inefficient zijn. Bovendien is het ook zo dat je nu op elke kolomnaam gaat zoeken, je snapt dat je dan in principe ook op al die tables een vorm van indexering moet aan brengen.

Zoals opgemerkt zou je iets met fulltext search kunnen doen, maar volgens mij helpt je dat niet echt met het vinden van de juiste kolom.

Verwijderd

Je zou natuurlijk wel het aantal kolommen kunnen beperken als je van te voren zou weten wat voor een datatype je zoekt.

Dan hoef je dus alleen alle varchar kolommen op te halen bv.
Pagina: 1