Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben
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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...