Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 21 von 21

Thema: Inhalt von 2 Feldern aus 2 verschiedenen Tabellen vergleichen

  1. #16
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    hmmm... laut SQL99 geht die Syntax für aneinanderreihung so:

    Code:
    CONCATENATE('% ' || to_lower(a.nachname))
    Ich glaube nicht, dass die unterschiedlichen Datentype eine Rolle spielen... durch das to_lower sind es doch einfach nur noch Strings, oder?

  2. #17
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Das Aneinanderhängen müsste in Ordnung sein, allerdings machen mir die Datentypen sorgen. Caste die doch mal, so dass es die gleichen Datentypen sind.
    Das Ziel ist das Ziel.

  3. #18
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    select b.name from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0;

    char wird mit leerzeichen aufgefüllt.
    der dieses design verbrochen hat sollte entlassen werden.


    -j

  4. #19
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Zitat Zitat von Jasper
    select b.name from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0;

    char wird mit leerzeichen aufgefüllt.
    der dieses design verbrochen hat sollte entlassen werden.


    -j
    trim!!
    Da dürfte der Hase im Pfeffer liegen. Klar kommt 'strothoff ' in einem varchar-Feld nicht vor.
    Das Ziel ist das Ziel.

  5. #20
    Registrierter Benutzer
    Registriert seit
    14.02.2005
    Beiträge
    33
    Zitat Zitat von Jasper
    select b.name from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0;

    char wird mit leerzeichen aufgefüllt.
    der dieses design verbrochen hat sollte entlassen werden.


    -j
    Super !

    Das funktioniert:

    Code:
    select b.name from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0 group by b.name
    Ich weiß jetzt nur nicht genau was da gemacht wird... kannst Du das mal erklären ? bzw. warum das jetzt gemacht wird und funktioniert ???

    Er gibt jetzt auch ziemlich viel Müll aus, aber auf jeden Fall gibt er jetzt schonmal was aus...

    Hier sowas gibt er z.B. aus:

    Code:
    -
    ----
    .
    ...
    //////  ENTREE GD PORTE ENTRE N° 6 ET 7
    //////// FAX DIRECT 03.28.26.19.31
    ///////// >>>> PAS VISIBLE LE MERCREDI *
    ///////// PONT/ STATION SHELL PUIS A DROITE.
    /////////// 129/131 RUE DE CHAMPAGNE.
    /////////// > 49 AV. KENNEDY BOULOGNE / MER
    //////////// > STE DE COMPTOIRS FRIGORIFIQUE
    //////////// FAX DIRECT 03.28.26.19.31
    ///////////// FAX DIRECT 03.28.26.19.31
    //////////////// Z.P.  GARE DES MARAIS
    /////////////////  GROUPEMENT FRANCE BENNE
    /////////////////// COMPTE MAITRE 612390   (59).
    //////////////////// ATELIER DE CAROSSERIE.
    ///////////////////// >  49 AV. KENNEDY BOULOGNE /MER
    //////////////////////  LA BASSE
    //////////////////////  LA BASSEE
    ////////////////////// > STE DE NEGOCE DE VIANDE.
    ////////////////////// > VISIBLE NOEL /  NOUVEL AN
    ///////////////////////   IDEM TPS PLESSIET.
    /////////////////////// > VENTE DE GAZ REFRIGERANT
    ///////////////////////// > 3 RUE DU PIC AU VENT
    /////////////////////////// BUREAU DANS LE JARDIN.
    //////////////////////////////  >  GROUPE FRANCE BENNE
    ////////////////////////////////     TOURISME VERNEY
    ////////////////////////////////// > P&O
    /////////////////transportspolin@wanadoo.fr
    /////////////>>>>>>>> G.F.P. TOURISME
    ///////////>>>>>>>>> VISIBLE A >>>
    //////FAX DIRECT 03.28.26.19.31
    /Babette Kalisk-Pars
    /Fr. Klein
    /Osterland
    01739098879-8-Mann
    06-51315313
    08.3363 en 08.3364 in uk
    1 Rottweiler
    2 Brüder 1er davon im Rollstuhl
    2 Söhne 1 Dipl.Kfm, 1 Schrauber
    2 x Herren Kosse
    2 x Hr.Fricke jun.
    27777 Ganderkesee
    2x Herren Kaiser
    2xHr.Gutekunst jun.
    38108 Braunschweig
    3xHr.Kleine
    74841105     tony   el     Ingelise
    ;r boogaerts
    >   ADRESSE PRIVE    >
    > 39 QUAI DES CANOTIERS
    > A COTE DU MARCHAND DE VIN
    > BUREAU SUER LAMBRES LES DOUAI
    > PAS DE VISITE LE MERCREDI APRES MIDI.
    > Z.I. VILLENEUVE ST GERMAIN / SOISSONS
    >>>>>>>>> GARAGE / ENTREPOT
    ?
    A Davison
    A E Cannon
    A Ede
    A Henderson
    A Moody
    A Nightingale
    A Roberts
    A T Dunlop
    A Taylor
    A. Posmus
    A. Verschoor
    A.G.A.M. Vervoort
    So in der Art wie die letzten Einträge in dem Beispiel habe ich mir das vorgestellt... jetzt müssen nur noch diese ganzen Zeilen mit Sonderzeichen am Anfang etc. raus...




    Ein Problem ist mir gerade allerdings noch aufgefallen....

    Wenn ich
    Code:
    select b.name from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0 AND b.KD_NR = '060925'
    mache (also ohne den group by) bekomme ich 24 x Frau Strodthoff als Ergebnis !!!

    Wenn ich einzeln in den Tabellen nach dem Namen suche bekomme ich in der VITB03 aber nur 2 und in der WETX22 nur 1 Ergebnis !!!
    Wie kann dann die obrige Abfrage auf 24 Ergebnisse kommen ????
    Geändert von markwaldhoff (24-06-2005 um 07:31 Uhr)

  6. #21
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    Zitat Zitat von markwaldhoff
    Ich weiß jetzt nur nicht genau was da gemacht wird... kannst Du das mal erklären ? bzw. warum das jetzt gemacht wird und funktioniert ???
    rtrim schneidet alle rechten spaces weg (damit wird char varchar2 vergleichbar).
    lower konvertiert alles zu kleinbuchstaben.
    instr liefert > 0 zurück, wenn 2. argument in 1. argument vorkommt.

    Er gibt jetzt auch ziemlich viel Müll aus, aber auf jeden Fall gibt er jetzt schonmal was aus...
    siehe obige erklärung zu instr().

    du kannst auch das mal probieren:

    select distinct(b.name) from b join a on instr(reverse(lower(b.name)),reverse(lower(rtrim(a .nachname)))) = 1;

    die namen werden umgedreht: meier => reiem. wenn instr() = 1 => substring matcht am ende, d.h. 'herr meier', 'meier' sind treffer, 'herr meier sein hund', 'meier' nicht.

    solltest du oracle 10g verwenden, nimm regexp für das matching.

    Ein Problem ist mir gerade allerdings noch aufgefallen....

    Wenn ich
    Code:
    select b.name from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0 AND b.KD_NR = '060925'
    mache (also ohne den group by) bekomme ich 24 x Frau Strodthoff als Ergebnis !!!
    das statement ist falsch. 'group by' ist für aggregat-funktionen und das prädikat b.kd_nr gehört in die where-klausel. duplikate unterdrückt man mit distinct:

    select distinct(b.name) from WETX22 a join VITB03 b on instr(lower(b.name),lower(rtrim(a.nachname))) > 0 where b.KD_NR = '060925';


    -j

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •