nanunana Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 Hallo Freunde, ich habe eine Tabelle erstellt, jetzt möchte ich diese Tabelle befüllen mit datensätzen , die In einem anderen Tabelle stehen, unter der Voraussetzung Spalte1_EINTRAG= xy ich habe folgendes gemacht update TAB2 select * from TAB1 Where Spalte1_EINTRAG = xy ich möchte nur Datensätze mit in die andere Tabelle nehmen , derren ersten Spalteneintrag = xy. ich danke im voraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 Ein UPDATE ändert vorhanden Sätze. Ein INSERT fügt neue Datensätze ein: INSERT INTO deine_tabelle SELECT spalte1,spalte2,...FROM deine_andere_tabelle WHERE ... Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 16. November 2007 Autor Teilen Geschrieben 16. November 2007 Hallo INSERT INTO deine_tabelle SELECT spalte1,spalte2,...FROM deine_andere_tabelle WHERE ... kann man hier sagen select alle spalten, aber nur die spalten über die der Datensat mit WHERE Bedingungen strecket formulieren Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 aber nur die spalten über die der Datensat mit WHERE Bedingungen strecket formulieren Das versteh ich jetzt nicht ganz. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 16. November 2007 Autor Teilen Geschrieben 16. November 2007 Hallo es ist eine große Tabelle mit , sag ma mal 100 spalten. die Datensätze, die ich in die andere Tabelle kopieren will,unter der Bedingungen, bestehen nur aus 16 Spalten, oder besser gesagt, strecken sie sich über 16 spalten. die Grosse Tabelle enthält Dantensdätze mit unterschiedlichen Längen. ich möchte einfach nicht alle 16 spalten_namen in mein Code haben, ob es da ein anderer Weg gibt ??? Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 ob es da ein anderer Weg gibt Nein. Du musst schon alle Spalten einzeln angeben die Du im SELECT haben möchtest. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 16. November 2007 Autor Teilen Geschrieben 16. November 2007 Hallo muss ich nach dem From Tabelle ein "," oder ";" eigeben where lautet bei Mir: Spalten_Eintrag = xy...ich möchte die Spalte1-Einträge mir xy vergleichen, und die jenigen , die übereinstimmen, rüber in die andere Tabelle. könntest du mir auch den Befehl syntaktisch beschreiben Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 muss ich nach dem From Tabelle ein "," oder ";" eigeben Wie kommst du darauf? Meherer Tabellen in FROM werden durch , getrennt aber eine allein braucht weder ein , noch ein ; where lautet bei Mir: Spalten_Eintrag = xy Schon mal der erste Fehler: xy ist ein String, daher muss es lauten: WHERE Spalten_Eintrag = [b]'[/b]xy[b]'[/b] könntest du mir auch den Befehl syntaktisch beschreiben INSERT Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 16. November 2007 Autor Teilen Geschrieben 16. November 2007 Hallo Dim, erstmal Nett von Dir für Deine Hilfe, ich habe soweit mein SQL-Befehl konstruiert, und nachdem Muster, den du mir gegeben hast. INSERT INTO deine_tabelle SELECT spalte1,spalte2,...FROM deine_andere_tabelle WHERE spalten1-Eintrag = 'xy'; mit spalten1-Eintrag meine ich eine kategorie der Strings, ein Wort kann man sagen, das in meiner Spalte1 steht.....muss an der Stelle mein Spaltenname eingeben:::: Where Spaltenname = 'Eintrag'; ich kann immer nocht nicht meine Datensätze in die andere Tabelle koppieren ? Where Spaltenname = 'Eintrag'; ich habe so versucht, wird trotzdem nicht koppiert in die andere Tabelle.man kann auch so sagen, ich möchte nur Datensätze, die den xy(Eintrag) in der spalte1 aus der grossen Tabelle stehen haben, in die andere Tabelle, die ich schon erstellt habe, koppiert haben. Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 Ich kapier irgendwie gar nichts mehr. Du hast doch hoffentlich mein SQL so angepasst, dass es für dich stimmt oder? spalte1 und spalte2 etc. waren nur Beispielnamen. Du musst natürlich deine eigenen Spaltennamen verwenden! Poste doch mal dein Statement so wie Du es ausgeführt hast und die Fehlermeldung dazu. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 16. November 2007 Autor Teilen Geschrieben 16. November 2007 Hallo Dim, meine Tabelle hat mehrere Spalten, in der ersten Spalte mit dem Namen Städte steht Hamburg, Münschen.....und und. es gibt städte in dieser Spalte,die sich öfter vorkommen, bis jetzt alles klar. nun nehmen wir Beispiel Die stadt Hamburg, sie ist 4 Mal in dieser Spalte vorgekommen. jetzt möchte ich die 4 Datensätze, in denen Hamburg vorgekommen, in eine andere Tabelle kopieren,diese andere Tabelle habe ich auch schon vorher erstellt. und so habe ich das gemacht INSERT INTO (Tabelle, in der ich koppieren möchte) SELECT Spalte1(städte),spalte2,...FROM (Tabelle, wo Hamburg öfter in der ersten Spalte WHERE Städte= 'Hamburg'; trotzdem werden die Daten nicht in der erstellten Tabelle kopiert. ich hoffe , ich habe dieses Mal gut erklärt. Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 Warum postets Du nicht einfach das original Statement so wie Du es ausführt. Einfach reinkopieren und fertig. Dazu die Fehlermeldung. Oder was meinst Du mit rotzdem werden die Daten nicht in der erstellten Tabelle kopiert. Damit kann ich nichts anfangen. Welche Fehlermeldung tritt auf? Oder tritt überhaupt keine Fehlermeldung auf? Comittest Du nach dem Insert? Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 16. November 2007 Autor Teilen Geschrieben 16. November 2007 Hallo Dim, folendes habe ich geschrieben INSERT INTO tab2 SELECT städte,Lage,...FROM tab1 WHERE Städte= 'Hamburg'; tab2 habe ich schon vorher mit dem Befehl Create mit den spalten erstellt Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. November 2007 Teilen Geschrieben 16. November 2007 Ok. Mald avon abgesehen, dass Du Spalten mit Umlauten drinnen hast (welche DB verwendest Du denn) sollte das doch funktionieren. Da du keine Fehlermeldung gepostet hast, geh ich mal davon aus, dass das Statement funktioniert. Logischerweise kann es dann nur zwei Schlussfolgerungen geben: 1. Es gibt einfach keine Sätze in tab1 bei denen städte='Hamburg' ist. 2. Es werden Sätze in tab2 geschrieben, aber Du comittest nicht und nachdem Deine Session beendet ist, wird die Änderung zurückgerolt. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 17. November 2007 Autor Teilen Geschrieben 17. November 2007 Hallo dim, 2. Es werden Sätze in tab2 geschrieben, aber Du comittest nicht und nachdem Deine Session beendet ist, wird die Änderung zurückgerolt was meinst du Mit <Du comittest nicht>?..ich habe über den SQL Loader die Tab 1 importiert, es war kein Problem, ich kann mir die Tabelle auch über den entrprise manager console auch ansehen, das ist ein Oracle9i datenbank, und ich habe auch alle Rechte, daran kann es nicht liegen ? die Tab2 habe ich vor dem Ausführen des Befehl erstellt,sie ist auch in entrprise manager Console zu sehen, SIE WIRD NUR NICHT BEFÜLLT NACHDEM AUSFÜHREN DES BEFEHLES. Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 18. November 2007 Teilen Geschrieben 18. November 2007 Gibt es denn überhaupt Sätze die deinen Kriterien entsprechen? Führ doch mal das SELECT ohne den INSERT INTO Teil aus dann siehst Du es ja gleich. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 18. November 2007 Autor Teilen Geschrieben 18. November 2007 Hallo Dim, es gibt naturlich Sätze, die meine Kriterien entsprechen, ich kann ja meine Datensätze in der Tabelle (tab1) über den Entrprise manager doch ansehen, alle die Datensätze , die ich über SQL LOADER importiert habe sind drine und Eingetragen, bist du Dir sicher , dass man in der WHERE Spaltenname = ' Hamburg' macht. Merci Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 18. November 2007 Teilen Geschrieben 18. November 2007 Also wenn Das SQL fehlerfrei durchläuft, Du einem COMMIT danach ausführst damit die Änderungen auch festgeschrieben werden und Sätze vorhanden sind diese aber nicht eingefügt werden - auf welche Schlussfolgerung soll man da jetzt kommen? Dim PS: las den Enterprise Manager. Der ist dazu da um die DB zu administrieren und nicht um Daten anzusehen. Lad dir lieber den Oracle SQL Developer runter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 18. November 2007 Autor Teilen Geschrieben 18. November 2007 Hallo Dim, kannst du mir sagen, wie ich commiten kann,, ich habe das noch nie gemacht,ist für mich neu, ich bin auch überhaupt in dem Bereich neu !!! müsste normalerweise den Oracle SQL Devolopper nicht mit installiert sein, weil ich habe eine Komplette Installation gemacht für oracle9i. Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 18. November 2007 Teilen Geschrieben 18. November 2007 Du führst den Befehl commit; aus. Nein der SQL Developer wird nicht mitgeliefert. Den musst du separat runterladen. Im übrigen gab es den SQLDeveloper noch gar nicht als die Version 9 raus kam ;-) Du solltest dir aber echt mal ein Buch kaufen, denn wenn es beim Commit schon hapert, dann ist das in etwa so, als ob man ein Auto fährst aber leider nicht weiß wie man es betankt. Das soll nicht schlecht sein: Oracle 9i in 21 Tagen Alternativ die Oracle Doku: Application Developer's Guide - Fundamentals Egal was, aber Du musst dich damit eingehend beschäftigen. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 18. November 2007 Autor Teilen Geschrieben 18. November 2007 Hallo Dim, ich danke Dir für deinen Tipp , es hat jetzt geklappt,,,es lag nur daran, ich habe am Ende vom WHere Bedingung eine Semicolone ";" gemacht. na ya ,,ich lerne jetzt so langsam langsam. Das Buch werde ich mir auf jeden Fall kaufen,,,, Danke noch Mal bis denn Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 18. November 2007 Autor Teilen Geschrieben 18. November 2007 Hallo Dim, wenn ich <Insert to Tab1 Select sp,sp,sp,sp from Tab2> schreibe muss meine tab1_spalten anzahl mit der ausgesuchten Spalten aus Tab2 übereinstimmen , oder ist das egal ? dh selectiert wird die spalte ,und die Spalte, aus Tab2 und diese bitte in die tab1. ich habe in meiner Tab1 eine neue Spalte erstellt, die soll Eintragfrei bleiben, den Befehl noch ausgeführt, und es konnte nicht geschrieben werden ? die Fogenden fehler kommen dabei raus : Fehler: ORA-00926: Schlüsselwort VALUES fehlt übrigens das Buch habe ich gerade bestellt. Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 18. November 2007 Teilen Geschrieben 18. November 2007 Wenn die Spaltenanzahl nicht übereinstimmt, dann musst Du Oracle mitteilen welche Spalten Du befüllt haben möchtest: INSERT INTO tblziel [B](spalte1,spalte2)[/B] SELECT col1,col2 FROM tblquelle; Du kannst mit dieser Syntax auch nur die 1, 3, und 5 Spalte befüllen. Je nachdem was Du machen möchtest. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 18. November 2007 Autor Teilen Geschrieben 18. November 2007 Hallo Dim, ich werde es Morgen probieren...melde ich mich Morgen. Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nanunana Geschrieben 20. November 2007 Autor Teilen Geschrieben 20. November 2007 Hallo Dim, es läuft alles soweit gut,,, jetzt habe ich noch eine Frage: ALTER TABLE Tab2 ADD CONSTRAINT GO_tab2 PRIMARY KEY (ID) NOLOGGING dieser Befehl erstellt ein Index auf die Spalte ID mit dem Namen GO_tab2 oder wie ist das zu verstehen...index erstellen lautet normalerweise so: Create Index Name ON Tablle ( SPALTE). Gruss 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.