WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   tricky SQL (http://www.wcm.at/forum/showthread.php?t=207604)

Bizeps 11.01.2007 15:14

tricky SQL
 
Hallo,

hat vielleicht einer von euch eine Idee dazu?


Gegeben sei eine Tabelle, die folgendermaßen aussieht:

create table gdwh_columns
(
table_name varchar(30) not null,
column_name varchar(30) not null
)

Records darin sehen folgendermaßen aus:

table_name (column_name)
TB0_ACCOUNT (ACCOUNT_ID)
TB0_ACCOUNT (UNID)
TB0_ACCOUNT (REF_ACCOUNT_ID)
TB0_ACCOUNT (ACCOUNT_TYPE)
TB0_ACCOUNT (PRODUCT_TYPE_SUBTYPE)
TB0_CURRENCY_MARKET (UNID)
TB0_CURRENCY_MARKET (UNID)
TB0_CURRENCY_MARKET (CURRENCY_MARKET_DESCRIPTION)
TB0_CURRENCY_MARKET (CURRENCY_MARKET_ID)

und so weiter.

Jetzt brauche ich ein SQL, dass mir die Inhalte der column_name Spalte
zerlegt und eine Zählung der Teile vornimmt.
Also, das Ergebnis sollte so aussehen:

part count(*)
ACCOUNT 3
UNID 3
ID 3
REF 1
TYPE 2
SUBTYPE 1
CURRENCY 2
MARKET 2
DESCRIPTION 1

Die Anzahl der Attribute in der Tabelle sind etwa 8000, Trennzeichen zum
aufsplitten ist immer der "_" (Underscore).

Hintergrund ist, dass ich ein Abkürzungsverzeichnis, bzw. ein Glossary
anlegen will, an dem man sich für neue Felder orientieren kann.

JoergStueger 17.01.2007 15:10

Hallo Bizeps!

Ich versteh Dein Beispiel nicht ...

Erklär mir mal bitte warum
TB0_ACCOUNT (ACCOUNT_ID)

das hier
ACCOUNT 3

ergeben soll ...

Ich checks nicht ...

LG
Joerg

T.dot 18.01.2007 09:36

Mir fällt zwar für die DBs, die ich kenn, keine Variante ein, aber es
fragt sich natürlich welche Datenbank du verwendest?

@Joerg:
Er will die Spaltennamen nach _ aufsplitten (dh. ACCOUNT_ID gibt Wert ACCOUNT und ID) und dann die Anzahl der gesplitten Werte ermitteln. (Dh. wie oft kommt ACCOUNT, wie oft ID, wie oft UNID, usw. vor).

jak 18.01.2007 19:20

Was spricht dagegen das in der Programmiersprache deiner Wahl zu erledigen? In php geht das z.B. mit explode() sehr flott, und ich vermute das es auch in anderen Sprachen einfach geht.

In php:
Code:

$stringcounts = array;
//die daten aus der db holen und eine schleife darüber
while($row = ...){
  $parts = explode('_', $row[0])
  foreach($parts as $idstr){
    if(isset($stringcounts[$idstr])) $stringcounts[$idstr] ++;
    else $stringcounts[$idstr] = 1;
  }
}

print_r($stringcounts[$idstr]);

jak

JoergStueger 19.01.2007 09:03

Zitat:

@Joerg:
Er will die Spaltennamen nach _ aufsplitten (dh. ACCOUNT_ID gibt Wert ACCOUNT und ID) und dann die Anzahl der gesplitten Werte ermitteln. (Dh. wie oft kommt ACCOUNT, wie oft ID, wie oft UNID, usw. vor).
OK, jetzt hab ichs .... ;-)

Für die mir bekannen SQL Dialekte sehr ich da ebenfalls keine Chance ...

LG
Joerg


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag