Hallo Leute,
ich hab da ein Problem mit einer Abfrage. Um genauer zu werden, geht es um folgende Abfrage:
VORGANG.VORGANGID AS VORGANGID,
PROJEKTE.PROJEKTID AS PROJEKTID,
FIRMA.NAME AS KUNDE,
VORGANG.NAME AS VORGANGNAME
FROM
PROJEKTE,
VORGANG,
ARBEITSZEITEN,
FIRMA
WHERE
( PROJEKTE.FIRMAID=FIRMA.FIRMAID )
AND ( VORGANG.PROJEKTID(+)=PROJEKTE.PROJEKTID )
AND ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+))
GROUP BY
VORGANG.VORGANGID,
PROJEKTE.PROJEKTID,
FIRMA.NAME,
VORGANG.NAME
Als Ergebnis liefert mir die oben stehende Abfrage alle Vorgänge pro Projekt. So weit so gut, dachte ich...!
Bei einer Datenbankstichprobe und einer nach genauerer Analyse der betroffenen Tabellen in der Datenbank ist mir aufgefallen,
dass vereinzelt nicht alle Vorgänge zu jedem Projekt angezeigt wurden.
Nach längerem Überlegen fand ich auch den Grund dafür heraus.
Die Where-Bedingung: ( VORGANG.PROJEKTID(+)=PROJEKTE.PROJEKTID ) zeigt alle Datensätze der Tabelle "VORGANG" an, die mit der PROJEKTID übereinstimmen
Die Where-Bedingung: ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+)) zeigt alle Datensätze der Tabelle "Arbeitszeiten" an, die mit der VORGANGID übereinstimmen
In der genannten Datenbankstichprobe fand ich heraus, dass das Projekt mit der PROJEKTID "300" zwei Vorgänge hat. Allerdings zeigte meine Abgfrage nur eine an.
Also filtere ich die Abfrage auf dieses Projekt. Ich begann mit den Where-Bedingungen zu experementieren.
Ich kommentierte die Where-Bedingung: ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+)) aus und nun zeigte mir die Abfrage die zwei dazugehörigen Vorgänge.
Ich meinte die Lösung gefunden zu haben, also löste ich die Filterung auf das Projekt mit der ProjektID "300", um mir alle Projekte anzeigen zu lassen!
Aber dann kann kam die Fehlermeldung: ORA-01652: Temp-Segment kann nicht um 128 in Tablespace erweitert werden
Das Problem ist, dass in der Tabelle "Arbeitszeiten" noch keine Datensätze für den fehlenden Vorgang angelegt wurden und mir
die Where-Bedingungen deshalb nur die Vorgänge zeigen, für die in der Tabelle "Arbeitszeiten" auch Datensätz angelegt wurden.
Erst duch das auskommentieren der Where-Bedingung: ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+)) konnte ich dies umgehen,
aber nur so lange die Filterung auf ein Projekt aktiv war!
Ich weiss nicht weiter! Für jede Hilfe bin ich sehr dankbar! Ich hoffe ich konnte das Problem, verständlich erklären!
Bedanke mich schon mal im Voraus!!!
Viele Grüße
David
ich hab da ein Problem mit einer Abfrage. Um genauer zu werden, geht es um folgende Abfrage:
VORGANG.VORGANGID AS VORGANGID,
PROJEKTE.PROJEKTID AS PROJEKTID,
FIRMA.NAME AS KUNDE,
VORGANG.NAME AS VORGANGNAME
FROM
PROJEKTE,
VORGANG,
ARBEITSZEITEN,
FIRMA
WHERE
( PROJEKTE.FIRMAID=FIRMA.FIRMAID )
AND ( VORGANG.PROJEKTID(+)=PROJEKTE.PROJEKTID )
AND ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+))
GROUP BY
VORGANG.VORGANGID,
PROJEKTE.PROJEKTID,
FIRMA.NAME,
VORGANG.NAME
Als Ergebnis liefert mir die oben stehende Abfrage alle Vorgänge pro Projekt. So weit so gut, dachte ich...!
Bei einer Datenbankstichprobe und einer nach genauerer Analyse der betroffenen Tabellen in der Datenbank ist mir aufgefallen,
dass vereinzelt nicht alle Vorgänge zu jedem Projekt angezeigt wurden.
Nach längerem Überlegen fand ich auch den Grund dafür heraus.
Die Where-Bedingung: ( VORGANG.PROJEKTID(+)=PROJEKTE.PROJEKTID ) zeigt alle Datensätze der Tabelle "VORGANG" an, die mit der PROJEKTID übereinstimmen
Die Where-Bedingung: ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+)) zeigt alle Datensätze der Tabelle "Arbeitszeiten" an, die mit der VORGANGID übereinstimmen
In der genannten Datenbankstichprobe fand ich heraus, dass das Projekt mit der PROJEKTID "300" zwei Vorgänge hat. Allerdings zeigte meine Abgfrage nur eine an.
Also filtere ich die Abfrage auf dieses Projekt. Ich begann mit den Where-Bedingungen zu experementieren.
Ich kommentierte die Where-Bedingung: ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+)) aus und nun zeigte mir die Abfrage die zwei dazugehörigen Vorgänge.
Ich meinte die Lösung gefunden zu haben, also löste ich die Filterung auf das Projekt mit der ProjektID "300", um mir alle Projekte anzeigen zu lassen!
Aber dann kann kam die Fehlermeldung: ORA-01652: Temp-Segment kann nicht um 128 in Tablespace erweitert werden
Das Problem ist, dass in der Tabelle "Arbeitszeiten" noch keine Datensätze für den fehlenden Vorgang angelegt wurden und mir
die Where-Bedingungen deshalb nur die Vorgänge zeigen, für die in der Tabelle "Arbeitszeiten" auch Datensätz angelegt wurden.
Erst duch das auskommentieren der Where-Bedingung: ( VORGANG.VORGANGID = ARBEITSZEITEN.VORGANGID(+)) konnte ich dies umgehen,
aber nur so lange die Filterung auf ein Projekt aktiv war!
Ich weiss nicht weiter! Für jede Hilfe bin ich sehr dankbar! Ich hoffe ich konnte das Problem, verständlich erklären!
Bedanke mich schon mal im Voraus!!!
Viele Grüße
David
Comment