Announcement

Collapse
No announcement yet.

Variable / Gruppe erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variable / Gruppe erstellen

    Hallo Forum,

    ich geb es gleich zu: bin ein ziemlicher Neuling, daher schilder ich euch gleich mein Problem:

    in einer Tabelle stehen u.a. Kunden-Nummern.
    Diese sind so aufgebaut, dass als erstes die K-Nr. kommt, und dann, mit Bindestrich, eine weitere Zahl, also so z.B: 200100-01, 200100-02, usw.

    Es geht nun darum, dass jede K-Nr. in der Tabelle eine unterschiedliche KomArt hat.
    Wie bekomme ich heraus, welche K-Nr. eine bestimmte KomArt NICHT hat?

    Bin echt am verzeifeln.
    Kann mir jemand weiterhelfen?

  • #2
    Hi,

    das Tabellendesign ist etwas unglücklich, denn normalerweise sollten diese zwei Informationen in zwei Spalten stehen, dann wäre das kein Problem. So müssen wir ein bissl tricksen.
    Als erstes würde ich eine View anlegen, damit der Zugriff einfacher geht. Ist aber kein Muss und langfristig sollte die Tabelle (und die Anwendung) geändert werden:
    Code:
    create view kunden_sicht 
      as select substr(knr,1,instr(knr,'-')-1) as kunden_nr,substr(knr,instr(knr,'-')+1) as komart 
         from kunden;
    Damit kannst Du schon mal einfach zwischen Kundennummer und Komart unterscheiden. Die Tabellen und Spaltennamen musst Du natürlich entsprechend anpassen.

    Damit der Zugriff auch einigermaßen performant wird kommt jetzt noch ein funktionsbasierter Index auf die Tabelle. Auch das ist kein Muss aber bei größeren Datenmengen sehr empfehlenswert:
    Code:
    create index komart_ix on kunden(substr(knr,instr(knr,'-')+1));
    Auch hier ggf anpassen.

    Danach ist es eigentlich nur noch eine Pflichtübung:
    Code:
    select * from kunden_sicht where komart not in('01','02');
    Ohne View würde das so aussehen:
    Code:
    select * from kunden where substr(knr,instr(knr,'-')+1) not in('01','02');
    Dim
    Zuletzt editiert von dimitri; 07.02.2010, 21:00.
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment

    Working...
    X