Hallo Community,
ich habe ein Problem, ist sehr wichtig. D.h. Hier darf kein Fehler passieren.
Wir erfassen in der Firma unsere Aufwände in einem Webbasierten Tool, welche im Hintergrund eine Oracle Datenbank hat.
d.h. Arbeitspaket X = 10 Stunden, Arbeitspaket Y = 20 Stunden, Arbeitspaket Z = 5 Stunden, Arbeitspaket A = 0 Stunden, Arbeitspaket B = 0 Stunden
Mir geht es nun darum, dass die Arbeitspakete A und B, die 0 Stunden haben, gelöscht werden sollen. Diese werden ebenfalls in der DB angelegt, was die DB unnötig aufbläht
Ich möchte die 0-Records löschen
Zunächst zur Struktur:
- Ich erstelle einen Arbeitszeitnachweis, dies wird in der Tabelle TM_TIME_SHEETS (TTS) angelegt
Pr. Key = time_sheet_id
- Im Arbeitszeitnachweis sind dann Informationen der Zeile enthalten, diese werden in der Tabelle TM_TIME_SHEET_LINES (TTSL) angelegt. Für jedes Zeile ein Record, in meinem Bsp. 5 Zeilen (X, Y, Z, A, B)
Pr. Key = time_sheet_line_id; foreign key = time_sheet_id (aus der Tabelle TM_TIME_SHEETS)
- Es wird für jede time sheet line zwei Zeilen in der Tabelle TM_ACTUALS (TA) angelegt
Pr. Key = actuals_id; foreign key = time_sheet_line_id (aus der Tabelle TM_TIME_SHEET_LINES)
- und schließlich werden die Stunden in der Tabelle TM_ACTUALS_EFFORT (TAE) angelegt
Pr. Key = actuals_id; foreign key = actuals_id (aus der Tabelle TM_ACTUALS)
Datenmäßig sieht es so aus - ich poste hier nur die notwendigen Daten
TM_TIME_SHEETS: -> ein Record, also ein Arbeitszeitnachweis
select * from tm_time_sheets where time_sheet_id = 31629
TIME_SHEET_ID = 31629
TM_TIME_SHEET_LINES: -> 15 Records, also hat der Mitarbeiter 15 Arbeitspakete in seinen Arbeitszeitnachweis hinzugefügt
select * from tm_time_sheet_lines where time_sheet_id = 31629;
TIME_SHEET_LINE_ID = 40259, 40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273
TIME_SHEET_ID = 31629
TM_ACTUALS: -> 30 Records, pro Time_sheet_line 2 Records
select * from tm_actuals where time_sheet_line_id in (40259, 40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273);
ACTUALS_ID = 50474, 50475, 50476, 50477, 50478, 50479, 50480, 50481, 50482, 50483, 50484, 50485, 50486, 50487, 50488,
50489, 50490, 50491, 50492, 50493, 50494, 50495, 50496, 50497, 50498, 50499, 50500, 50501, 50502, 50503
TIME_SHEET_LINE_ID = 40259 (für ACTUALS_ID = 50474, 50475), 40260 (für ACTUALS_ID = 50476, 50477...usw.), 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273
TM_ACTUALS_EFFORT: 30 x 7 = 210 Records, also pro actuals_id 7 Records
Wenn ich 5 Stunden auf ein Arbeitspaket erfasse, dividiert das Tool durch 5 und schreibt Montag = 1, Di = 1, Mi = 1, Do = 1, Fr = 1, Sa = 0, So = 0 -> Sa und So arbeiten wir nicht
jede actuals_id kommt siebenmal vor
ACTUALS_ID = 50474, 50475, 50476, 50477, 50478, 50479, 50480, 50481, 50482, 50483, 50484, 50485, 50486, 50487, 50488,
50489, 50490, 50491, 50492, 50493, 50494, 50495, 50496, 50497, 50498, 50499, 50500, 50501, 50502, 50503
Nun wurden manche Zeilen einfach aus der Favoritenliste übernommen (Favoritenliste hat z.B. 15 Arbeitspakete) und auf 3 Arbeitspakete wurden Zeiten eingegeben aber in den restlichen 12 wurde nichts eingegeben, was so viele unnötige Records in der DB erzeugt.
Ich will nun diese 0-Records entfernen.
Wie schreibe ich so ein Delete-Statement? Also die Child-Records aus TM_ACTUALS_EFFORT, TM_ACTUALS und TM_TIME_SHEET_LINES sollen gelöscht werden. Und es sollen natürlich ALLE 0-Records gelöscht werden, nicht bezogen auf das obige Bsp.
Danke euch im Voraus und LG,
Ram
ich habe ein Problem, ist sehr wichtig. D.h. Hier darf kein Fehler passieren.
Wir erfassen in der Firma unsere Aufwände in einem Webbasierten Tool, welche im Hintergrund eine Oracle Datenbank hat.
d.h. Arbeitspaket X = 10 Stunden, Arbeitspaket Y = 20 Stunden, Arbeitspaket Z = 5 Stunden, Arbeitspaket A = 0 Stunden, Arbeitspaket B = 0 Stunden
Mir geht es nun darum, dass die Arbeitspakete A und B, die 0 Stunden haben, gelöscht werden sollen. Diese werden ebenfalls in der DB angelegt, was die DB unnötig aufbläht
Ich möchte die 0-Records löschen
Zunächst zur Struktur:
- Ich erstelle einen Arbeitszeitnachweis, dies wird in der Tabelle TM_TIME_SHEETS (TTS) angelegt
Pr. Key = time_sheet_id
- Im Arbeitszeitnachweis sind dann Informationen der Zeile enthalten, diese werden in der Tabelle TM_TIME_SHEET_LINES (TTSL) angelegt. Für jedes Zeile ein Record, in meinem Bsp. 5 Zeilen (X, Y, Z, A, B)
Pr. Key = time_sheet_line_id; foreign key = time_sheet_id (aus der Tabelle TM_TIME_SHEETS)
- Es wird für jede time sheet line zwei Zeilen in der Tabelle TM_ACTUALS (TA) angelegt
Pr. Key = actuals_id; foreign key = time_sheet_line_id (aus der Tabelle TM_TIME_SHEET_LINES)
- und schließlich werden die Stunden in der Tabelle TM_ACTUALS_EFFORT (TAE) angelegt
Pr. Key = actuals_id; foreign key = actuals_id (aus der Tabelle TM_ACTUALS)
Datenmäßig sieht es so aus - ich poste hier nur die notwendigen Daten
TM_TIME_SHEETS: -> ein Record, also ein Arbeitszeitnachweis
select * from tm_time_sheets where time_sheet_id = 31629
TIME_SHEET_ID = 31629
TM_TIME_SHEET_LINES: -> 15 Records, also hat der Mitarbeiter 15 Arbeitspakete in seinen Arbeitszeitnachweis hinzugefügt
select * from tm_time_sheet_lines where time_sheet_id = 31629;
TIME_SHEET_LINE_ID = 40259, 40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273
TIME_SHEET_ID = 31629
TM_ACTUALS: -> 30 Records, pro Time_sheet_line 2 Records
select * from tm_actuals where time_sheet_line_id in (40259, 40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273);
ACTUALS_ID = 50474, 50475, 50476, 50477, 50478, 50479, 50480, 50481, 50482, 50483, 50484, 50485, 50486, 50487, 50488,
50489, 50490, 50491, 50492, 50493, 50494, 50495, 50496, 50497, 50498, 50499, 50500, 50501, 50502, 50503
TIME_SHEET_LINE_ID = 40259 (für ACTUALS_ID = 50474, 50475), 40260 (für ACTUALS_ID = 50476, 50477...usw.), 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273
TM_ACTUALS_EFFORT: 30 x 7 = 210 Records, also pro actuals_id 7 Records
Wenn ich 5 Stunden auf ein Arbeitspaket erfasse, dividiert das Tool durch 5 und schreibt Montag = 1, Di = 1, Mi = 1, Do = 1, Fr = 1, Sa = 0, So = 0 -> Sa und So arbeiten wir nicht
jede actuals_id kommt siebenmal vor
ACTUALS_ID = 50474, 50475, 50476, 50477, 50478, 50479, 50480, 50481, 50482, 50483, 50484, 50485, 50486, 50487, 50488,
50489, 50490, 50491, 50492, 50493, 50494, 50495, 50496, 50497, 50498, 50499, 50500, 50501, 50502, 50503
Nun wurden manche Zeilen einfach aus der Favoritenliste übernommen (Favoritenliste hat z.B. 15 Arbeitspakete) und auf 3 Arbeitspakete wurden Zeiten eingegeben aber in den restlichen 12 wurde nichts eingegeben, was so viele unnötige Records in der DB erzeugt.
Ich will nun diese 0-Records entfernen.
Wie schreibe ich so ein Delete-Statement? Also die Child-Records aus TM_ACTUALS_EFFORT, TM_ACTUALS und TM_TIME_SHEET_LINES sollen gelöscht werden. Und es sollen natürlich ALLE 0-Records gelöscht werden, nicht bezogen auf das obige Bsp.
Danke euch im Voraus und LG,
Ram