Join mit Subselect und Maskierung?

MrUnwissend

Benutzer
Beiträge
13
Guten Tag,

ich bekomme aktuell die Krise, da ich es nicht gebacken bekomme eine Artikelnummer auf eine Artikelnummer zu joinen.

Folgendes Problem: Ich möchte eine Nummer die XXXX-XXXX als Standard hat aber teilweise auch noch Anhänge also XXXX-XXXXYYYXX joinen und zwar so, dass ich auch alle erwische die Anhänge haben.

"Material" bekomme ich durch eine andere Abfrage hierbei können Nummern wie XXXX-XXXX aber auch XXXX-XXXXYYYXX ausgespuckt werden. Material stellt dabei meine Produktpalette dar ... ich möchte diese Produktpalette mit der Unternehmenspalette verknüpfen also auch eine Übersicht an Materialien.
Der Knackpunkt: Wenn in Material nur XXXX-XXXX ausgespuckt wird möchte ich in der Unternehmenspalette trotzdem auf XXXX-XXXXYYYXX suchen.. dabei gilt dass die Standardnummer XXXX-XXXX eben bestehen bleibt lediglich der Anhang YYYXX kann sich ändern dabei ist YYY immer 0 und XX können beliebige Zahlen sein.
Ich möchte also mit einem 1234-1234 Material auch 1234-12340033 finden können

Bisher war die Abfrage folgende:

Left JOIN Tabbelle 1 M
ON Material = MaterialUN
Hierbei werden aber nicht alle Materialien mit Anhänge einbezogen....

Mein bisheriger Versuch für den Einbezug aller Materialien war folgender:
Left JOIN Tabbelle 1 M
ON Material = REGEXP_LIKE([=substr(Material,1,9)=],0|IS NULL, 0| IS NULL, 0| IS NULL,.,.)

Das war aber leider nicht erfolgreich.. nun weiß ich leider nicht mehr weiter :(
Vielleicht habt ihr ja eine Idee
 
Zuletzt bearbeitet:
Werbung:
Hilft Dir dies weiter?

Code:
test=*# select '1234-12340033' ~ '1234-1234';
 ?column?
----------
 t
(1 Zeile)

PS.: weiße Schrift auf weißem Grund fällt sofort ins Auge. Nicht.
 
Hey,

sorry für die blöde formatierung.

Das hilft mir leider nicht weiter... es geht nicht um explizite zahlen heißt die Abfrage muss allgemein gehalten sein

Es muss also immer die Materialstammnummer XXXX-XXXX + 000 + XX als Muster beachtet werden. Dabei kann es sein dass als Material nur XXXX-XXXX rein kommt.. im Unternehmensstamm möchte ich dennoch auch XXXX-XXXX+000+XX für das explizite Material prüfen.

ich habe soeben folgendes gebaut:

REGEXP_LIKE(Material+(000[0-9]{2}) || Material)
klappt aber auch nicht
 
Hintergrund ist eher, ob wir es schaffen die Abfrage indizierbar zu machen oder nicht.
Wenn nicht, dann wird es mit der Indizierung etwas schwerer...
Code:
select b.* from tab1 a join tab2 b on a.spalteY like substr(b.spalteX,1,(length(a.spalteY)))||'%'
 
Werbung:
Zurück
Oben