Oracle Cross join
Ich habe diese drei Tabellen.
Tabelle1:
Resource1
Resource2
Resource3
Tabelle2:
Period1
Period2
Period3
Tabelle3:
Resource1 Period1
Resource1 Period2
Resource1 Period2
Resource2 Period1
Resource2 Period1
Resource3 Period3
Ich brauche, um zu diesem Ergebnis:
Resource1 Period1
Resource1 Period2
Resource1 Period2
Resource1 Period3
Resource2 Period1
Resource2 Period1
Resource2 Period2
Resource2 Period3
Resource3 Period3
Resource3 Period1
Resource3 Period2
Ich habe versucht, outer-joins, aber keine Wirkung. Ich habe gefunden, dass wahrscheinlich cross join sollte helfen, aber ich war nicht erfolgreich in der Umsetzung. Könnte jemand so nett und hilft mir mit diesem Zeug?
Vielen Dank,
r.
Könnten Sie erläutern Regeln, wie man erstellen Sie Ihre ResultSet? Was meinst du mit "unnützen " Zeilen"?
Tut mir Leid für die Verwirrung. Ich werde löschen Hinweis über unnötige Zeilen aus der Beschreibung, richtige jetzt. Regeln sind: Tabelle1 enthält alle Ressourcen. Tabelle2 enthält alle offenen Perioden in das system. Tabelle3 enthält die Ressourcen, so etwas in bestimmten Zeitraum. (Duplikate sind möglich) Jede Ressource haben muss, um alle offenen Perioden erwähnt werden, mit seinem Namen UND wenn er schon in Tabelle3 mentiond offene Periode, egal wie viele Male, diese Daten müssen auch dabei sein. Also Ergebnis: doppelte Einträge aus Tabelle3 sollte da sein und wenn einige Perioden zu öffnen von Tabelle2 fehlen, sollten Sie es auch).
Tut mir Leid für die Verwirrung. Ich werde löschen Hinweis über unnötige Zeilen aus der Beschreibung, richtige jetzt. Regeln sind: Tabelle1 enthält alle Ressourcen. Tabelle2 enthält alle offenen Perioden in das system. Tabelle3 enthält die Ressourcen, so etwas in bestimmten Zeitraum. (Duplikate sind möglich) Jede Ressource haben muss, um alle offenen Perioden erwähnt werden, mit seinem Namen UND wenn er schon in Tabelle3 mentiond offene Periode, egal wie viele Male, diese Daten müssen auch dabei sein. Also Ergebnis: doppelte Einträge aus Tabelle3 sollte da sein und wenn einige Perioden zu öffnen von Tabelle2 fehlen, sollten Sie es auch).
InformationsquelleAutor roxor | 2013-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung einer common table expression zu generieren, die alle die Kombinationen, dann verwenden Sie eine äußere Verknüpfung enthalten Duplikate angezeigt, in
table3
.Dies kann nicht produzieren die richtige Antwort, je nachdem, was du damit meinst " ich weiß nicht, wie, um loszuwerden, unnötige Zeilen ". Die Ausgabe, die Sie präsentieren, scheint nicht zu verwerfen alle Zeilen aus den Tabellen, und Sie haben noch nicht alle Regeln. Also, wenn dies nicht geben Ihnen, was Sie wollen, müssen Sie Bearbeiten Ihre Frage für Klarheit zu sorgen.
Ich Stimme der WITH-Klausel ist nicht zwingend, aber ich mag Sie, weil Sie helfen können, klären Sie die query-Struktur.
Es funktioniert genau das brauchte ich! Ich kann jetzt sehen, warum meine Lösungen waren alle schlecht. Ich war immer fehlt diese zweite Bedingung: und Tabelle3.Zeitraum = cte.Zeit, Danke sehr.
InformationsquelleAutor APC
Bekomme ich dein Ergebnis,aber ich bin mir nicht sicher ob mein Gedanke richtig ist oder nicht..
http://www.sqlfiddle.com/#!4/36667/2
Jahr,es ist wirklich bequem,ich fand es auch von anderen hier : ) .
InformationsquelleAutor Gentlezerg