Datensatz mit SQL kopieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Datensatz mit SQL kopieren

Re: Datensatz mit SQL kopieren

von PeterJHaas » Fr, 26.10.2007 17:49

Hallo Billy,
keyboard-billy hat geschrieben:B.t.w.: Wie bist Du auf diese Lösung gekommen (... im speziellen, dass man das VALUES weglässt und die Klammern anders setzen muss) :?:
Kurz mal in die Dokumentation meiner favorisierten Datenbank gesehen, da stehen jeweils ein paar Beispiele zu den einzelnen SQL-Befehlen. Ich bin mir aber sicher, daß man mittels Internetsuche auch schnell ein passendes Beispiel finden würde.
riedlka1 hat geschrieben:um einen Datensatz zu kopieren, eine so primitive Sache sollte schon Standard sein
In SQL gibt's keinen Standard! Es gibt nur eine allgemeine Anlehnung - die nennt sich SQL'92. Es ist aber kein Geheimnis, dass fast jede Datenbank ihren eigenen SQL-Dialekt hat :wink: .
Wobei die Unterschiede mehr im Detail und im Vorhandensein bestimmter Features liegen. Ich vermute mal, daß das Kopieren eines Datensatzes bei den meisten Datenbanken in der genannten Form funktioniert, wenn sie diese Funktion überhaupt unterstützen.

BTW: Auf jeden Fall auch bei den MS-Datenbanken.

MfG Peter.

Re: Datensatz mit SQL kopieren

von keyboard-billy » Fr, 26.10.2007 14:42

@PeterJHaas

Hallo Peter,

klasse Lösung - funzt einwandfrei 8) . Ganz herzliches Dankeschön für Deinen konstruktiven Beitrag :D .
B.t.w.: Wie bist Du auf diese Lösung gekommen (... im speziellen, dass man das VALUES weglässt und die Klammern anders setzen muss) :?:

@riedlka1
riedlka1 hat geschrieben:Genau aus diesem Grund habe ich es schon lange aufgegeben, mich mit halbfertigen, unzulänglichen Lösungen abzugeben
...OOo ist nicht minder "halbfertig" als die Lösung von M$ :!:
riedlka1 hat geschrieben:um einen Datensatz zu kopieren, eine so primitive Sache sollte schon Standard sein
In SQL gibt's keinen Standard! Es gibt nur eine allgemeine Anlehnung - die nennt sich SQL'92. Es ist aber kein Geheimnis, dass fast jede Datenbank ihren eigenen SQL-Dialekt hat :wink: .
keyboard-billy hat geschrieben:mit Office 97 ist das ein K L A C K S auch wenn ich Windows hasse, aber es ist wirklich B E N U T Z E R F R E U N D L I C H, das mußte sein!
2 Sachen:
  • 1. Ich habe einige Jahre mit M$ Office '97 beruflich zu tun gehabt; genauer gesagt ich habe darin programmiert. Die M$ JET-Database und das daran angebundene JET-SQL ist auch kein Standard und funktioniert keineswegs besser. Die HSQLDB von OOo ist auf alle Fälle wesentlich leistungsfähiger, als das was M$ Office '97 zu bieten hat.
  • 2. Redest Du jetzt von M$ Office oder WIndows, wenn Du von der Benutzerfreundlichkeit redest?
    OOo ist auf jeden Fall nicht weniger Benutzerfreundlich , als M$ Office :wink: . Nur wesentlich lestungsfähiger :lol: .
Natürlich muss man sich mit OOo eingehend beschäftigen und ordentlich üben. Aber das ist bei M$ Office nicht besser... :mrgreen:

Greets,
Billy

Re: Datensatz mit SQL kopieren

von PeterJHaas » Fr, 26.10.2007 00:58

Hallo Billy,
keyboard-billy hat geschrieben:Ich möchte jetzt einen bestehenden Datensatz duplizieren. Dazu habe ich mir folgendes SQL-Statement überlegt:

Code: Alles auswählen

INSERT INTO "Aufträge" ("Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
                        "Ende", "Gage", "Währung", "Aufbau",
                        "Veranstaltungsort", "Straße", "Postleitzahl",
                        "Ort", "Telefon", "Mobiltelefon", "Fax",
                        "Ansprechpartner", "Bemerkungen")
VALUES ( SELECT "Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
        "Ende", "Gage", "Währung", "Aufbau", "Veranstaltungsort", "Straße",
        "Postleitzahl", "Ort", "Telefon", "Mobiltelefon", "Fax",
        "Ansprechpartner", "Bemerkungen"
 FROM  "Aufträge"
 WHERE ("Kundennummer" = 101 AND "Bemerkungen" LIKE '%fasching 2007'))
Versuche es mal mit:

Code: Alles auswählen

INSERT INTO "Aufträge" ("Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
                        "Ende", "Gage", "Währung", "Aufbau",
                        "Veranstaltungsort", "Straße", "Postleitzahl",
                        "Ort", "Telefon", "Mobiltelefon", "Fax",
                        "Ansprechpartner", "Bemerkungen")
 SELECT "Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
        "Ende", "Gage", "Währung", "Aufbau", "Veranstaltungsort", "Straße",
        "Postleitzahl", "Ort", "Telefon", "Mobiltelefon", "Fax",
        "Ansprechpartner", "Bemerkungen"
 FROM  "Aufträge"
 WHERE ("Kundennummer" = 101 AND "Bemerkungen" LIKE '%fasching 2007')
MfG Peter.

Re: Datensatz mit SQL kopieren

von PeterJHaas » Fr, 26.10.2007 00:56

riedlka1 hat geschrieben:da hilft keine Literatur a` la Datenbanken für Openoffice von selbsternannten Experten, ...
Schon deswegen, weil das überhaupt nichts mit OOo zu tun hat und vielmehr mit der zugrundeliegenden Datenbank.

MfG Peter.

Re: Datensatz mit SQL kopieren

von riedlka1 » Do, 25.10.2007 20:56

Genau aus diesem Grund habe ich es schon lange aufgegeben, mich mit halbfertigen, unzulänglichen Lösungen abzugeben, da hilft keine Literatur a` la Datenbanken für Openoffice von selbsternannten Experten, die Dir Deine Zeit nur noch länger indirekt stehlen, die ich als Benutzer des Programms studieren und programmieren muß um einen Datensatz zu kopieren, eine so primitive Sache sollte schon Standard sein, mit Office 97 ist das ein K L A C K S auch wenn ich Windows hasse, aber es ist wirklich B E N U T Z E R F R E U N D L I C H, das mußte sein!

Datensatz mit SQL kopieren

von keyboard-billy » Do, 25.10.2007 14:29

Hallo Leutz,

ich habe eine Tabelle, die folgende Felder hat:

"Auftragsnummer","Kundennummer","Auftragsschlüssel","Datum", "Beginn","Ende","Gage","Währung","Aufbau","Veranstaltungsort", "Straße","Postleitzahl","Ort","Telefon","Mobiltelefon","Fax", "Ansprechpartner","Bemerkungen"

Das Feld "Auftragsnummer" ist der PrimaryKey mit einem Autoincrement. Deshalb habe ich es im folgenden Selectstatement auch nicht mit berücksichtigt.

Ich möchte jetzt einen bestehenden Datensatz duplizieren. Dazu habe ich mir folgendes SQL-Statement überlegt:

Code: Alles auswählen

INSERT INTO "Aufträge" ("Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
                        "Ende", "Gage", "Währung", "Aufbau",
                        "Veranstaltungsort", "Straße", "Postleitzahl",
                        "Ort", "Telefon", "Mobiltelefon", "Fax",
                        "Ansprechpartner", "Bemerkungen")
VALUES ( SELECT "Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
        "Ende", "Gage", "Währung", "Aufbau", "Veranstaltungsort", "Straße",
        "Postleitzahl", "Ort", "Telefon", "Mobiltelefon", "Fax",
        "Ansprechpartner", "Bemerkungen"
 FROM  "Aufträge"
 WHERE ("Kundennummer" = 101 AND "Bemerkungen" LIKE '%fasching 2007'))
Wenn ich den Code im "SQL Statement ausführen" Dialog nun ausführen möchte, bekomm ich folgende Fehlermeldung:

1: Column count does not match in statement [INSERT INTO "Aufträge" ("Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
"Ende", "Gage", "Währung", "Aufbau",
"Veranstaltungsort", "Straße", "Postleitzahl",
"Ort", "Telefon", "Mobiltelefon", "Fax",
"Ansprechpartner", "Bemerkungen")
VALUES ( SELECT "Kundennummer", "Auftragsschlüssel", "Datum", "Beginn",
"Ende", "Gage", "Währung", "Aufbau", "Veranstaltungsort", "Straße",
"Postleitzahl", "Ort", "Telefon", "Mobiltelefon", "Fax",
"Ansprechpartner", "Bemerkungen"
FROM "Aufträge"
WHERE ("Kundennummer" = 101 AND "Bemerkungen" LIKE '%fasching 2007'))]


Das SELECT-Statement alleine funktioniert prima. Die INSERT-Anweisung funktioniert auch, wenn man statt des SELECT-Statements eine Werteliste für die erforderlichen Felder eingibt.

Ich habe keine Ahnung, warum das nicht funktioniert :?: . Vielleicht weiß jemand weiter?

Danke & Greets,
Billy

Nach oben