Toon posts:

[MSSQL] voorkomen verschillende kolom waarden *

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

Verwijderd

Topicstarter
Ik heb een (zeer) grote db (honderduizenden records en boven de 100 kolommen) en ik wil van bepaalde kolommen weten welke verschillende waarden erin voorkomen. Ik hoop hierdoor het aantal kolommen te kunnen reduceren.
Ik ben niet echt ervaren in sql (ik gebruik sql server 7.0), en ik vroeg me af hoe ik dit het beste kon aanpakken. Ik ben zelf al een tijdje ermee bezig maar zowel de resultaten als de lange zoektijd zijn niet zoals het zou moeten. Zo krijg ik namelijk alle mogelijke combinaties van values en dat hoeft nou ook weer niet.
Een voorbeeld wat ik wil krijgen:

kolom1 | kolom2 | kolom3 | .....etc
-------------------------------------------
Kol1Val1 | Kol2Val1 | Kol3Val1 | ....
Kol1Val2 | Kol2Val2 | Kol3Val2 | ....
Kol1Val3 .........................................
................... etc .............................. Het kan dus zijn dat een kolom 110 values heeft en een ander maar 2.
En het liefst zou ik van elke waarde ook nog zien hoeveel deze voorkomt maar ik ben al blij als bovenstaande al werkt. Zou iemand mij hiermee kunnen helpen?

Verwijderd

Ik denk niet dat je deze analyse meteen op álle kolommen en waarden moet botvieren. Dat wordt een enorme kluif. Als ik jou was, zou ik het per kolom gaan aanpakken. Dat klinkt misschien als veel werk, maar je bent immers een database aan het optimizen...

Verder zie ik niet echt in hoe je het aantal kolommen kan reduceren door de waarden erin te analyseren. Meestal maken de duizenden regels softwarecode gebruik van deze kolommen, dus die kan je niet zomaar weghalen. Maar aan de andere kant, ik weet niet precies waar jij daar mee bezig bent... ;)

:7

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Topic prefixed...

Professionele website nodig?


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Een GROUP BY clausule i.c.m. een JOIN should do the trick ;)
Vervolgens zou je met COUNT() het aantal identieke waarden kunnen bepalen.

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
er hoeft geen relatie meer te bestaan tussen de verschillende kolommen ik wil slechts een overzicht van de verschillende waarden per kolom :? . Het resultaat geeft dan alleen de verschillende waarden per kolom. Ik dacht dat join middels een key die relatie met de records wel onderhield. Dus voor elke kolom in de tabel wil ik een overzicht van de verschillende waarden per kolom. :?

  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 18-08 15:40
Als je alleen maar de verschillende waarden in de kolom wilt hebben, gebruik dan select distinct (zie deze pagina voor meer info (iets naar beneden scrollen) )

Verwijderd

Topicstarter
Het werkt wel, maar ik krijg dan wel een vermeerdering van de waarden per kolom doordat de records alle mogelijke combinaties ziet. |:( vb ik krijg de onderstaande tabel terwijl ik dus slechts een A en een B in kol1 verwacht en een 1 en 2 in kol2. :/ Dit is belangrijk omdat ik zo'n grote DB heb!

kol1 | kol2 | ..... etc
-------------------------
A | 1 | ...
A | 2 | ...
B | 1 | ...
B | 2 | ...
....etc

Verwijderd

Wat heb je tot nu toe?
/me is benieuwd naar de Query

Verwijderd

Topicstarter
klein testje gemaakt, kan maar een keer select distinct gebruiken. Ben een beetje moedeloos aan het worden. :'( :

select distinct kolomnaam1, kolomnaam2, kolomnaam3
from table

?? group by kolomnaam1, kolomnaam2, kolomnaam3??

probeerde al diverse andere dingen, maar ik vrees dat ik een te grote leek ben en steeds dezelfde fouten maak 8)7

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik krijg de indruk dat je het aantal RIJEN wilt verminderen ipv het aantal kolommen. Ik begrijp verder dat er geen documentatie is van de columns die je nu hebt? (want anders kun je aan de hand daarvan bepalen of ze weg mogen of niet. Ik krijg ook de indruk dat je columns wil samenvoegen, klopt dat?

Corrigeer me maar, dan kunnen we kijken wat voor T-SQL je kunt gebruiken.

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


Verwijderd

Topicstarter
Het volgende is het geval. Ik heb een DB waarvan alleen theoretische type documentatie is, de werkelijkheid is echter anders en welke mogelijke waarden gebruikt worden voor de kolomwaarden is nergens terug te vinden. 8)7 Aangezien ik 190 kolommmen heb en honderduizenden records is het overzicht natuurlijk snel zoek. Ik wil de kolommen die weinig nut hebben eerst verwijderen zodat ik hierna de rijen kan selecteren die ik nodig heb. Het kan niet andersom omdat ik de twee subdatabases zo eerlijk mogelijk wil vergelijken. Ik wil daarom weten welke waarden een kolom bevat (bv als er alleen een + of een null voorkomt dan kan ik deze verwijderen uit de tabel, ook een weinig voorkomen van een bepaalde kolom waarde kan betekenen dat deze kolom niet van belang is, dit laatste moet ik dan nog wel onderzoeken maar dat is tenminste gerichter dan wat ik nu kan). Vandaar dat het eigenlijk ook beter is dat ik meteen het voorkomen ervan (count?) kan zien.
Pagina: 1