Seite 1 von 1

Insert mit Select Statement?

Verfasst: Sa 28. Nov 2015, 13:22
von MacLeod
Mahlzeit,

ich habe zwei Tabellen, eine große Tabelle 1 die alle Daten enthält. Aus der großen Tabelle möchte ich einige Spalten in eine andere Tabelle 2 übernehmen.
Tab 2 besteht aus 8 Spalten: ID (Autoincr.),A,B,C,D,E,F,G

INSERT INTO "2" ( "A","B","C","D","E","F") values (
SELECT "a","b",SUBSTRING(c,4,4),SUBSTRING(c,1,2),"d","e" from "1")

Beim Ausführen des SQL bekomme ich aber immer: "Column count does not match in statement ..."
Das Select allein ausgeführt liefert alle gewünschten Daten. Und nach Adam Riese stimmt auch die Anzahl der Spalten überein.

Hat jemand bitte einen Tip für mich woran das liegen könnte?

VG
MacLeod

Re: Insert mit Select Statement?

Verfasst: Sa 28. Nov 2015, 13:32
von F3K Total
Hi,
entweder values oder Select darum:

Code: Alles auswählen

INSERT INTO "2" ( "A","B","C","D","E","F") SELECT "a","b",SUBSTRING(c,4,4),SUBSTRING(c,1,2),"d","e" from "1"
oder

Code: Alles auswählen

INSERT INTO "2" ( "A","B","C","D","E","F") VALUES( 17,'Hallo','Montag','Herr',23.448,TRUE)
wobei dann natürlich der Datentyp zur Spalte passen muss.
Gruß R

Re: Insert mit Select Statement?

Verfasst: So 29. Nov 2015, 09:11
von MacLeod
F3K Total hat geschrieben:Hi,
entweder values oder Select darum:

Code: Alles auswählen

INSERT INTO "2" ( "A","B","C","D","E","F") SELECT "a","b",SUBSTRING(c,4,4),SUBSTRING(c,1,2),"d","e" from "1"
...
Gruß R
Danke.
Für mich kommt dann nur die erste Variante in Frage.
Nur bekomme ich damit leider einen weiteren Fehler :(
SQL-Status: HY000
Fehler-Code: 1000

syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Ich muss mal schauen woran das liegt.

Schönen ersten Advent!

Re: Insert mit Select Statement?

Verfasst: So 29. Nov 2015, 09:54
von RobertG
Hallo MacLeod,

hast Du die Abfrage so ausprobiert?

Code: Alles auswählen

SELECT "a","b",SUBSTRING(c,4,4),SUBSTRING(c,1,2),"d","e" from "1"
Vielleicht sind es ja nur die Anführungszeichen um die "c".

Ich habe das gerade bei einer einfachen Tabelle mit zwei Spalten getestet - lief problemlos ab.

Gruß

Robert

Re: Insert mit Select Statement?

Verfasst: So 29. Nov 2015, 10:24
von MacLeod
Auch der Feldname C war entsprechend mit " eingefasst. Das ist ein Schreibfehler gestern hier im Forum gewesen.

Code: Alles auswählen

SELECT "a","b",SUBSTRING("c",4,4),SUBSTRING("c",1,2),"d","e" from "1"
Ein evtl. Problem fällt mir gerade noch auf.
Die Felder aus Tabelle 1 sind alles Varchars. In Tabelle 2 sind nur die Felder A und F Varchar, B ist Smallint und C,D,E sind Numeric. Kann das der Grund für die Fehlermeldung sein?

Re: Insert mit Select Statement?

Verfasst: So 29. Nov 2015, 10:28
von F3K Total
Logo!
F3K Total hat geschrieben:... wobei dann natürlich der Datentyp zur Spalte passen muss.
Du kannst eine ggf. verfremdete Version deiner DB, ein paar Datenzeilen reichen, hier hochladen, gezippt, dann haben wir es in zwei MInuten.
Wenn die DB trotz löschen vieler Zeilen zu groß zum Hochladen ist, führe einmalig über Extras/SQL... den Befehl

Code: Alles auswählen

CHECKPOINT DEFRAG
, um sie zu komprimieren, aus.
Gruß R

Re: Insert mit Select Statement?

Verfasst: So 29. Nov 2015, 21:27
von MacLeod
Problem gelöst. Ich war die Tage an einem Rechner mit einer älteren Version vom Open Office :oops: :shock: :oops:
Jetzt mit meinem normalen PC und LO 4.4.6.3 sieht das ganze schon anders aus. Hier bekomme ich einen "Value to o long" Fehler beim Ausführen des SQL. Und siehe da, LO hat sogar recht. Das Feld in Tabelle 2, dass den Substring-Wert mit 4,4 aufnehmen soll, hatte nur Numeric mit 3 Zeichen in der Definition :oops: :oops: :oops:

Danke für die Hilfe!!!