❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Insert mit Select Statement?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
MacLeod
Beiträge: 10
Registriert: Mo 20. Jul 2015, 09:50

Insert mit Select Statement?

Beitrag von MacLeod » Sa 28. Nov 2015, 13:22

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Insert mit Select Statement?

Beitrag von F3K Total » Sa 28. Nov 2015, 13:32

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
Windows 11: AOO, LO Linux Mint: AOO, LO

MacLeod
Beiträge: 10
Registriert: Mo 20. Jul 2015, 09:50

Re: Insert mit Select Statement?

Beitrag von MacLeod » So 29. Nov 2015, 09:11

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!

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Insert mit Select Statement?

Beitrag von RobertG » So 29. Nov 2015, 09:54

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

MacLeod
Beiträge: 10
Registriert: Mo 20. Jul 2015, 09:50

Re: Insert mit Select Statement?

Beitrag von MacLeod » So 29. Nov 2015, 10:24

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?

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Insert mit Select Statement?

Beitrag von F3K Total » So 29. Nov 2015, 10:28

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
Windows 11: AOO, LO Linux Mint: AOO, LO

MacLeod
Beiträge: 10
Registriert: Mo 20. Jul 2015, 09:50

Re: Insert mit Select Statement?

Beitrag von MacLeod » So 29. Nov 2015, 21:27

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!!!


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten