SQL-Query - nur teilweise Übereinstimmung
ohje
- datenbank
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?
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
Mahlzeit ohje,
Tabelle a enthält das Feld "modell" mit den Inhalten:
FESTO4711Tabelle 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
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
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