[FONT=Verdana, Arial, Helvetica, sans-serif]Hallo,
ich habe 2 tabellen
Tabelle 1:
NameL | Kostenstelle
Tabelle 2:
NameG | Kostenstelle
Jetzt das Problem, NameL ist in NameG enthalten, sie gehören quasi zusammen.
Bsp:
NameL = gruppenname_L
NameG = G_gruppenname_L
Ich möchte einfach beide Tabellen gegeneinander laufen lassen und als Ergebnis die richtige zuordnung
NameL | NameG | Kostenstelle
ich wollte das genze erst mit LIKE machen, allerdings kann man damit nur ein Wort angeben, nach dem gesucht werden soll und keine ganze spalte wo die wörter (inhalte) verglichen werden
könnt ihr mir helfen???
Comments
Crazy Chrizzy
Contributions on this page: 1
View profileWas spricht gegen die Lösung
[FONT=Fixedsys]SELECT t1.NameL, t2.NameG, t1.Kostenstelle
[FONT=Fixedsys]FROM Tabelle1 t1, Tabelle2 t2
[FONT=Fixedsys]WHERE t1.NameL like '%' || t2.NameG || '%'
[FONT=Fixedsys]AND t1.Kostenstelle = t2.Kostenstelle;
Ich kann das leider auch gerade nicht ausprobieren, und wenn ich es voll verfehlt habe, liegt es wohl daran, dass ich nicht verstehe, was du meinst mit "eine ganze Spalte suchen, wo die Wörter verglichen werden".
Ahoi erstmal!
dr_dolittle
Contributions on this page: 2
View profileAus meiner Sicht wäre es hier ganz sinnvoll, ein Foreign-Key-Constraint zu verwenden. Ich weiß ja jetzt nicht, welche der beiden Spalten der Primärschlüssel jeweils ist.
Ich würde in Tabelle1 eine dritte Spalte verwenden mit dem hübschen Namen "id" und diese als Primärschlüssel verwenden. Muss NameL auch eindeutig sein, zusätzlich auf diese Spalte einen "unique index".
In Tabelle2 dann ebenfalls eine 3. Spalte anlegen, die dann per Fremdschlüssel auf den entsprechenden Datensatz in Tabelle1 referenziert.
Somit kann man das Ergebnis mit Hilfe eines Joins in einer Abfrage erhalten, ohne irgendwelche Arrays im Speicher aufbauen zu müssen.
Könnte bei 1 Mio. Datensätze oder mehr irgendwann mal problematisch werden, dass die Maschine nicht den Geist aufgibt.
Also ist nur ein Vorschlag, wie ich es immer von unseren DBAs empfohlen bekomm und in der Berufsschule mal gelernt habe.
bin gespannt, was sonst noch für Vorschläge kommen...
dr_dolittle
Contributions on this page: 2
View profileChrizzy,
ich finde deinen Ansatz gar nicht schlecht,
nur würde ich in t2.NameG nach t1.NameL suchen. So habe ich die Fragestellung verstanden
also
Select ... where t2.nameg like '%'||t1.namel||'%' ...
Wobei ich aber eine richtige Zuordnung über einen Fremdschlüssel für die sicherere Variante halte
fisi03
Contributions on this page: 2
View profileVielen dank für eure ideen!
die sache hat sich zum glück schneller lösen lassen in dem ich noch ne andere tabelle auftreiben konnte die mehr daten her gab ...
da dieses problem aber wieder einmal auf tauchen kann, werde ich eure vorschläge testen sobald ich etwas zeit habe.
nochmal