alobar Geschrieben 1. Juni 2010 Teilen Geschrieben 1. Juni 2010 Hallo, es geht um folgende Aufgabe: Es sollen alle Zeilen mit einem Spaltenwert von "d_std > 2000 aus der Tabelle CAR in die Tabelle CABC kopiert werden. Die Tabelle CABC enthält die Spalten "herst", "typ", "ser_nr" und "wartungsdatum" mit denselben entsprechenden Datentypen wie die Tabelle CAR. Es soll zum Kopieren eine Unterabfrage verwendet werden. Die Klausel zum Einfügen einer Zeile in die Tabelle CABC soll die Spaltenliste "herst", "typ" und "ser_nr" enthalten. Die Tabelle CAR besitzt folgende Spalten: "herst", "typ", "ser_nr", "d_std" und "an_datum". Für Lösungsvorschläge wäre ich sehr dankbar. Vielen Dank im Voraus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 Grob gesagt als Kombination einer Auswahlabfrage auf CAR und einer Änderungsabfrage auf CABC. Was ist dir genau unklar? Was hast du dazu bisher im SQL erstellt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 ein INSERT INTO ... SELECT ist sicher das einfachste Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Daij Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 insert into ... select ... from ... where ;-) *klug******* ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 in diesem fall ist from und where sicher angebracht, aber ein select funktioniert auch ohne daher wird das eigentlich immer als INSERT INTO ... SELECT bezeichnet *klug******* ^^ *mitmach* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Daij Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 wie funktioniert ein select ohne from :eek ist doch immer insert into bla ( select b_id from blubb where b_id > 10 ); beispielsweiße oder ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 _n4p_ hat schon recht. "Umgansprachlich bezeichnet man das als INSERT INTO ... SELECT. das wirst Du immer wieder so finden. Das FROM schenkt man sich einfach, da es nur um die Befehle an sich geht. Gleiches gilt z.B. für CTAS (Create Table As Select) das nennt sich auch nicht CTASF. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 wie funktioniert ein select ohne from :eek SELECT 1+1; nein ist in verbindung mit dem insert nicht sinnvoll, aber das hat ja keiner behauptet ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alobar Geschrieben 2. Juni 2010 Autor Teilen Geschrieben 2. Juni 2010 Hallo MartinSt, deine Fragen sind berechtigt und die Informationen zu meiner Anfrage waren auch nicht vollständig. Daher noch folgender Sachverhalt: - Die Tabelle CABC muss neu angelegt werden. - Innerhalb der CREATE TABLE-Anweisung soll eine Unterabfrage erfolgen, in der die Datensätze "d_std > 2000" aus der Tabelle CAR in die neue Tabelle CABC kopiert werden. - Die neue Tabelle CABC soll die Spalten "herst", "typ", "ser_nr" enthalten, die auch die Tabelle CAR enthält. - Problem: Zusätzlich soll das Attribut "wartungsdatum" in die neue Tabelle aufgenommen werden (Datentyp DATE), das keine Daten enthalten soll. Dieses Attribut existiert so nicht in der Tabelle CAR, dafür besitzt diese Tabelle das Attribut "an_datum", mit Daten zum Anschaffungsdatum (Datentyp DATE). Quelltabelle: CAR mit den Attributen "herst", "typ", "ser_nr", "d_std", "an_datum" gefüllt mit Werten. Zieltabelle: CABC mit den Attributen "herst", "typ", "ser_nr" gefüllt mit entsprechenden Werten, "wartungsdatum" bleibt leer. Daher waren meine Überlegungen bis jetzt folgende: create table CABC as select herst, typ, ser_nr from CAR where d_std > 2000; Die Anweisung funktioniert so weit. Wie erhalte ich aber das Attribut "wartungsdatum" ohne Datensätze aus der Tabelle CAR in die neue Tabelle CABC? Es könnte ein JOIN zur Lösung führen, da müsste ich aber im Moment noch passen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 wenn ich dich recht verstanden habe gibt es keine daten die du in wartungsdatum übernehmen kannst/willst in dem Fall kannst du auch an der stelle einen einfachen ausdruck mit in das select aufnehmen. zb SELECT DATE('') AS 'wartungsdatum' und dann den rest so wie du es schon hast. nachteil wäre hier nur das dann standardmäßig überall der 1.1.1970 das wartungsdatum ist, weil die 0 halt auch als datum interpretiert wird. getestet unter MySQL 5.x, in MSSQL müsste es auch so/ähnlich funktionieren, oracle keine ahnung vermutlich aber schon. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 2. Juni 2010 Teilen Geschrieben 2. Juni 2010 @alobar Von welcher DB reden wir hier? Wo ist jetzt konkret dein Problem; beim wartungsdatum oder bei der Kombination von create und Insert? Gruß Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alobar Geschrieben 3. Juni 2010 Autor Teilen Geschrieben 3. Juni 2010 Es geht um das Erstellen des Attributs "wartungsdatum", das leer bleiben soll, für die neue Tabelle CABC innerhalb der oben beschriebenen Anweisung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 3. Juni 2010 Teilen Geschrieben 3. Juni 2010 @alobar Von welcher DB reden wir hier? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alobar Geschrieben 3. Juni 2010 Autor Teilen Geschrieben 3. Juni 2010 Es geht um eine ORACLE-Datenbank. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alobar Geschrieben 3. Juni 2010 Autor Teilen Geschrieben 3. Juni 2010 Ich habe das Problem gelöst. Mit CAST (NULL AS DATE) komme ich zu dem Ergebnis, das ich brauche. Vielen Dank für die Lösungsvorschläge. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 4. Juni 2010 Teilen Geschrieben 4. Juni 2010 SELECT 1+1; ORA-00923: FROM keyword not found where expected :hells: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 4. Juni 2010 Teilen Geschrieben 4. Juni 2010 Ich glaub das geht auch nur in ms sql oder mysql Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 4. Juni 2010 Teilen Geschrieben 4. Juni 2010 in postgreSQL auch, nur oracle kann es wieder nicht ginge sowas in oracle? SELECT meine_ganz_tolle_funktion('blub'); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 4. Juni 2010 Teilen Geschrieben 4. Juni 2010 Man muss ja auch nicht jeden Blödsinn mitmachen dafür gibts die dual Table. In oracle geht folgendes: select geniale_function from dual oder select * from table(ganz_tolle_pipelined_function) Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 4. Juni 2010 Teilen Geschrieben 4. Juni 2010 danke, und sry wegen off-topic ^^ 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.