Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Join Problem

Empfohlene Antworten

Veröffentlicht

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?

select tabelle2.komb, tabelle1.eintrag from tabelle2

right join tabelle1 on

tabelle2.ID = tabelle1.ID;

  • Autor

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]')

  • Autor
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

select

t2.*

from

tabelle2 t2

where

REGEXP_LIKE(t2.komb,(SELECT eintrag from tabelle))

Irgendwie so? Bin mir nicht sicher, ob das mit der Syntax passt, aber ein Sub-select sollte helfen.

  • Autor
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.

  • Autor

Hm...aber ich kann eine number-spalte doch nicht in eine varchar-spalte umwandeln, wenn schon werte drin steht, ich müsste dann ja ne neue spalte machen und die werte aus der number-spalte rüberziehen.

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

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

  • Autor

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

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

Das Beispiel würde gut in das IHK-Schema lebensfremder Prüfungsaufgaben reinpassen. ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.