Hallo,
meine Frage hat zwar nicht direkt mit Lazarus zu tun, aber da wir ja hier auch einige Datenbankspezialisten haben, stelle ich sie trotzdem mal hier.
Ich habe eine Tabelle Produkt, eine Module und eine Produktmodule.
Jedes Produkt hat eine Id und eine Bezeichnung. Genauso ist das bei den Modulen.
Da aber nicht jedes Modul zu jedem Produkt passt, gibt es die Zuordnungstabelle Produktmodule in der jede ModulId zu den passenden Produkten verknüpft ist.
Wenn jetzt ein neues Modul hinzukommt, dann habe ich dieses bei den Modulen angelegt und dann die Zuordnung zu jedem passenden Produkt händisch eingefügt.
Kann man ein kombiniertes select und insert Statement erstellen in der Form
Gib mir alle Produkte die zu Modul 4 passen und lege gleichzeitig eine Verknüpfung mit diesen ProduktIds mit Modul 13 an?
[gelöst] SQL Befehl Insert mit select?
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1651
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
[gelöst] SQL Befehl Insert mit select?
Zuletzt geändert von fliegermichl am So 26. Mai 2024, 13:14, insgesamt 1-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: SQL Befehl Insert mit select?
Hängt ein wenig von der Datenbank ab, aber die meisten unterstützen das Einfügen eines SELECT-Ergebnisses, z.B. SQlite3. Die Spalten des SELECT-Ergebnisses müssen natürlich zu der Tabelle passen, in die sie eingefügt werden sollen.fliegermichl hat geschrieben: So 26. Mai 2024, 11:59 Gib mir alle Produkte die zu Modul 4 passen und lege gleichzeitig eine Verknüpfung mit diesen ProduktIds mit Modul 13 an?
Hier ein Beispiel mir Parametern:
Code: Alles auswählen
-- Tabelle definieren
CREATE TABLE "Produktmodule" (
"ProduktID" INTEGER,
"ModulID" INTEGER,
PRIMARY KEY ("ProduktID", "ModulID")
);
-- Verknüpfungen zu allen Produkten für ein neues Modul einfügen, welches kompatbibel zu einem bisherigen Modul ist
INSERT INTO "Produktmodule" SELECT "ProduktID", :NeueModulID FROM "Produktmodule" WHERE "ModulID" = :KompatibleModulID;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1651
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: SQL Befehl Insert mit select?
Ah Danke.
Ganz genauso hat es nicht geklappt aber wenn man die Spaltennamen mit angibt, dann geht es. (MySql)
Da kam dann die Meldung "inserted 18 rows"
Ganz genauso hat es nicht geklappt aber wenn man die Spaltennamen mit angibt, dann geht es. (MySql)
Code: Alles auswählen
insert into produktmodule (produktid, modulid) select produktid, 31 from produktmodule where modulid = 1
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: [gelöst] SQL Befehl Insert mit select?
Die Details hängen dann immer ein wenig von der Datenbank ab, was sie haben will und auch ob es noch weitere Felder in deiner Zieltabelle gibt, die mit Standardwerten gefüllt werden sollen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein