ohje: SQL-Query - nur teilweise Übereinstimmung

Hallo,

ich habe zwei Tabellen zu vergleichen:
Tabelle a enthält das Feld "modell" mit den Inhalten:
FESTO4711
FESTO4712
FESTO4713

Tabelle b enthält das Feld "teilenummer" mit den Inhalten:
4711
4715

Ich suche jetzt einen SQL-Befehl, der mir den Wortteil "FESTO" in der Where-Klausel ignoriert, damit ich die Tabellen miteinander abgleichen kann.

Kann mir jemand helfen?

  1. Hallo,

    _wie_ abgleichen? _Was_ soll das Ergebnis sein?

    Vielleicht http://de.php.net/manual/de/function.str-replace.php, falls du PHP/MySql verwendest.

    Gruß Rainer

  2. Mahlzeit ohje,

    Tabelle a enthält das Feld "modell" mit den Inhalten:
    FESTO4711

    Tabelle b enthält das Feld "teilenummer" mit den Inhalten:
    4711

    D.h. die Spalte "modell" in Tabelle a hört *immer* mit genau der Zeichenfolge auf, die in Spalte "teilenummer" in Tabelle b enthalten ist?

    Grundsätzlich würde ich Dir ein vernünftiges, normalisiertes Datenbankmodell empfehlen - Deins scheint kaputt zu sein, wenn Du keine eindeutiges Primär- und Fremdschlüssel nutzen kannst.

    Anschließend solltest Du mindestens die beiden Spalten "modell" in Tabelle a und "teilenummer" in Tabelle b mit einem Index versehen. Dann *könnte* folgendes funktionieren (wenn auch nicht performant):

    SELECT a.foo  
    ,      b.bar  
      FROM a  
      JOIN b ON a.modell LIKE CONCAT('%', b.teilenummer)
    

    (evtl. lautet die Syntax bei dem von Dir verwendeten - und glorreich verschwiegenen - Datenbanksystem etwas anders)

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. SELECT a.foo

      ,      b.bar
        FROM a
        JOIN b ON a.modell LIKE CONCAT('%', b.teilenummer)

      
      >   
      
      »»MfG,  
      »»EKKi  
        
        
        
      Hallo EKKi,  
        
      genau das concat hat mir gefehlt.  
        
      Vielen Dank
      
    2. yo,

      Dann *könnte* folgendes funktionieren (wenn auch nicht performant):

      ich habe mein zweifel, dass LIKE dafür der geeignete weg ist, das kann recht leicht für falsche treffer sorgen. wenn "FESTO" ein konstanter wert ist, kann man ihn mit einer entsprechenden funktion entfernen und dann direkt vergleichen.

      Ilja