also die Aufgabe lautet:
Alle Mitarbeiter der Produktionsabteilung sollen ab sofort mit 10% ihrer Arbeitszeit im Projekt 6 mitarbeiten, die Stundenzahl ist zunächst unbekannt.
Ich dachte es mir irgendwie so in der Art
INSERT INTO MITARB VALUES (6, (SELECT PNR FROM PERS WHERE ANR = 55), 10, NULL )
Aber da ich ja bei dem SELECT eine Menge zurückbekomm geht das nicht.
Aber selbst manuell ablesen welche mitarbeiter gemeint sind kann ja net die Lösung sein.
ja nun kommt zwar kein Fehler mehr aber das beantwortet ja nicht die Frage, schließlich sollen alle Mitarbeiter der Abteilung und nicht nur der mit der größten PNR(Personalnummer) angesprochen werden.
Gruß Michael
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Tut immer gut, wenn man einen Prof schulmeistern kann
INSERT INTO MITARB (SELECT 6, PNR, 10, null FROM PERS WHERE
ANR = 55);
Sollte so erweitert werden:
INSERT INTO MITARB (JNR, PNR, ZEITANTEIL, STUNDEN)
(SELECT 6, PNR, 10, null
FROM PERS WHERE ANR = 55);
Der Grund ist schlicht und einfach, dass
a) du dann die Tabelle erweitern kannst, ohne dass du deinen INSERT umschreiben musst (zumindest wenn die neuen Spalten auch NULL enthalten dürfen) und dass
b) Die Reihenfolge der Spalten nicht auf jeder Datenbank, mit der du arbeitest zwangsläufig gleich sein muss (könnte zum Beispiel entstanden sein, weil in der einen DB die Tabelle mit allen Feldern wie in der obigen Reihenfolge angelegt wurde, während die andere DB ein Update von einer früheren Version ist, wo die Spalte ZEITANTEIL nachträglich per ALTER TABLE eingefügt wurde und daher jetzt ganz hinten steht).
Insgesamt gilt es als schlechter Stil, sich auf Anzahl und Reihenfolge von Spalten zu verlassen, weil es die Wart- und Erweiterbarkeit des Programms negativ beeinflusst.
Gleiches gilt übrigens auch für „SELECT * FROM my_tab…“
INSERT INTO MEIN\_SCHEMA.MITARB (JNR, PNR,ZEITANTEIL, STUNDEN)
SELECT 6, PNR, 10, null
FROM MEIN\_SCHEMA.PERS
WHERE ANR = 55;
Ich laß die Klammern auch gleich weg, erspart mindestens 1/4 Sekunde Tipparbeit …
Und um das Ganze noch abzurunden, sollte man noch das Schema dazuschreiben oder zumindest der Hinweis gegeben sein, daß es sich um ein Synonym handelt, damit auch die Schemas auf verschiedenen Instanzen frei vergeben werden können …
Grüße,
Tomh
Pui, die Oraceler sind wieder mal pingelig in letzter Zeit …