Zum Inhalt springen

Join Problem


ostpower

Empfohlene Beiträge

Ich habe 2 Tabellen die ich joinen möchte. Nur mein ergebnis is net so wies sein soll.

Tabelle1

ID______eintrag

1_______1

2_______7

3_______1

Tabelle2

ID______komb

1_______567

2_______2345

3_______127

4_______36

5_______123

So jetzt soll er mir die Einträge aus Tabelle2 ausgeben, wo in komb die zahl aus eintrag vorkommt, also bei der 567,der 127 und der 123

Bei meinem statement gibt er mir diese 3 ergebnisse aber 3 mal aus, also insgesamt 9 results, es sollen aber nur 3 results sein. Also wie würdet ihr das schreiben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab grad gesehn, dass mein statement gar net stimmt, also er gibt was falsches aus, ich hab des jetzt mal mit den zahlen direkt gemacht(1 und 7) dann kommt das richtige ergebnis, also es müssten jetzt nur die zahlen mit den spalten ersetzt werden.

select

t2.*

from

tabelle2 t2

where

REGEXP_LIKE(t2.komb, '[1 7]')

Link zu diesem Kommentar
Auf anderen Seiten teilen

select tabelle2.komb, tabelle1.eintrag from tabelle2

right join tabelle1 on

tabelle2.ID = tabelle1.ID;

Also die ID darf man nicht in die where bedingung nehmen, des hab ich blöd ins beispiel geschrieben, also es müsste direkt der eintrag mit der 1 und der 7 überprüft werden, im sinne von:

where t1.eintrag like t2.komb

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also hier müssen dringendst mal Grundlagen geschaffen werden: INNER JOIN - OUTER JOIN - SQL-Tips.de

Dann erledigt sich das Problem direkt von selbst.

Dim

Nee net ganz, weil ich ja net über die ID joinen kann, und des problem is halt, dass des 2 numberspalten sind, wenn des varchar-felder wären, könnt ich ja ganz einfach sowas machen '%||t1.spalte1||%' Aber des geht ja mit number net. darum war halt meine frage wie ich des dann machen soll.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm...aber ich kann eine number-spalte doch nicht in eine varchar-spalte umwandeln, wenn schon werte drin steht,

Ich sagte nicht, dass Du den Spaltentyp umwandeln solltest. Ließ dir doch mal die Doku von to_char durch.

Was genau machst Du eigentlich beruflich? Nur interessehalber, damit ich weiß wo ich dich einzuordnen hab.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Interessant welche Datenmodelle sich so in IT-Firmen verbergen... :upps

Versuchs mal damit:


SELECT t2.id,t2.komb FROM t1,t2

WHERE to_char(t2.komb) LIKE '%'||t1.eintrag||'%';

Wobei oracle auch ohne to_char eine impliziete Konvertierung vornehmen würde, aber damit wird's klarer was man anstellt.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, also er gibt mir schon die richtigen ergebnisse damit aus, aber eben immer noch doppelt, also mit diesem statement ob nun mit "to_char" oder ohne, kommt er auf folgende ausgabe:

ID______komb

3_______127

5_______123

1_______567

3_______127

3_______127

5_______123

Warum macht er das, als ausgabe sollte das ja eigentlich so dastehn:

ID______komb

1_______567

3_______127

5_______123

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum macht er das, als ausgabe sollte das ja eigentlich so dastehn

Das liegt daran, wie ein Join arbeitet. Für jeden Treffer den er findet gibt er einen Satz zurück. Du hast 2x die 1 und 1x die 7 in der Tabelle1.

Damit wird 127 natürlich dreimal gefunden. Zweimal weil Du 2x 1 in t1 hast und nochmal wegen der 7. Das ist absolut korrekt und gilt analog für deine anderen Ergebniszeilen.

Möchtest Du das es eindeutig wird, mach ein SELECT DISTINCT ...

Aber wie gesagt: Das Datenmodell ist absoluter Schrott. Wer sowas entwickelt hat sollte eigentlich direkt wieder dem freien Arbeitsmarkt zugeführt werden.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...