ostpower Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zysus Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 select tabelle2.komb, tabelle1.eintrag from tabelle2 right join tabelle1 on tabelle2.ID = tabelle1.ID; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 Hmm ich seh jetzt nicht, wie ein Outer Join hier helfen könnte. Wie sieht denn Dein Statement aus? Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 5. Mai 2008 Autor Teilen Geschrieben 5. Mai 2008 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]') Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 5. Mai 2008 Autor Teilen Geschrieben 5. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 Also ich drücke es mal mit meinen Worten aus: Du möchtest alle Einträge aus Tabelle2 haben, die in der Spalte komb eine Ziffer aus eintrag besitzen? Ist das so richtig? Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zysus Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 6. Mai 2008 Autor Teilen Geschrieben 6. Mai 2008 Also ich drücke es mal mit meinen Worten aus: Du möchtest alle Einträge aus Tabelle2 haben, die in der Spalte komb eine Ziffer aus eintrag besitzen? Ist das so richtig? Dim Exakt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 6. Mai 2008 Autor Teilen Geschrieben 6. Mai 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 6. Mai 2008 Teilen Geschrieben 6. Mai 2008 dass des 2 numberspalten sind, wenn des varchar-felder wären, Und was hindert dich daran die beiden nummerischen Felder mittels to_char in alphanumerische umzuwandeln? Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 6. Mai 2008 Autor Teilen Geschrieben 6. Mai 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 6. Mai 2008 Teilen Geschrieben 6. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 7. Mai 2008 Autor Teilen Geschrieben 7. Mai 2008 Ich bin praktikant in ner IT-firma und beschäftig mich da halt mit Datenbanken, womit ich mich nur net allzugut auskenn^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 7. Mai 2008 Teilen Geschrieben 7. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 7. Mai 2008 Autor Teilen Geschrieben 7. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 7. Mai 2008 Teilen Geschrieben 7. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zysus Geschrieben 7. Mai 2008 Teilen Geschrieben 7. Mai 2008 Das Beispiel würde gut in das IHK-Schema lebensfremder Prüfungsaufgaben reinpassen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.