![]() |
Datenbank: SQL • Zugriff über: SQL Management
SQL - Felder in gleiche Tabelle kopieren - anderer Schlüssl
Hallo Leute!
Ich bin gerade an einer Abfrage kurz vor dem Verzweifeln. Ich bin noch SQL - Anfänger und muss etwas erledigen für einen Kunden. Und zwar sieht das folgendermaßen aus. Ich habe einen Satz in einer Tabelle in der der Primärschlüssel die Kundennummer ist. Diesen Satz muss ich jetzt für alle Kunden in die selbe Tabelle bringen. Bei einem einzigen Kunden ist dieser Satz angelegt aber diesen muss ich jetzt kopieren für alle Kunden. Das ist der Satz den ich habe: 10110 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00 10110 ist die Kundennummer! Die Felder müssen jetzt bei allen Kunden gleich sein, bis auf das erste Feld (10110). Da müssen die anderen Kundennummer drin stehen! Wie mach ich das am Besten? Danke schonmal |
Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü
Z.B.
SQL-Code:
Btw. Ich würde einen syntetischen Schlüssel nehmen
Insert into ... select
|
Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü
Das hab ich versucht:
INSERT INTO KundenRechRab SELECT * FROM KundenRechRab WHERE KundenNr = '10110' und da kommt immer wieder die Verletztung des Primary Key. Wie sag ich dem, dass er das für alle Kunden machen soll |
Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü
Du hast zwei Probleme:
- So wie es da steht versucht du immer die gleiche Kundennummer zu inserten --> PK Violation - Du könntest nun einfach die PK Spalte im Insert weglassen --> PK Violation Was soll denn als Kundennummer bei den neuen Datensätzen eingetragen werden? |
Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü
Da müssen alle Kundennummer rein, die ich bei mir in der Tabelle "Kunden" habe.
Das bedeutet, dass ich aus der Tabelle Kunden mir die ganzen Kundennummern rausnehme und da im Insert an der ersten Stelle einfügen will! |
Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü
Hallo,
so könnte das gehen:
SQL-Code:
Spalte1 bis Spalte11 ersetzt Du bitte durch die Namen Deiner Zieltabelle.
insert into KundenRechRab /* die Tabelle, die für jeden Kunden einen Satz mit KundenNr 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00 enthalten soll */
select KundenNr, 1 as Spalte1, 1 as Spalte2, 'Rabatt' as Spalte3, 904100 as Spalte4, 0 as Spalte5, 1 as Spalte6, 0 as Spalte7, 1 as Spalte8, 4.50 as Spalte9, 1 as Spalte10, 50.00 as Spalte11 from Kunden /* diese Tabelle muss alle Kundennummern enthalten */ Eine Alternative wäre:
SQL-Code:
Dies setzt voraus, dass die Tabelle KundenRechRab genau eine Zeile (nämlich 10110 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00) enthält.
select Kunden.KundenNr, KundenRechRab.Spalte2 ... Spalte11 from Kunden, KundenRechRab
Hier wird ein kartesisches Produkt zwischen dieser einzeiligen Tabelle und der Kundentabelle erstellt, mit der Folge, dass für jeden Kunden eine Zeile im Ergebnis steht, die aus
Code:
besteht.
Kundennummer 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00
Mit
SQL-Code:
kannst Du die Daten in die Zieltabelle übernehmen.
insert into Zieltabelle select Kunden.KundenNr, KundenRechRab.Spalte2 ... Spalte11 from Kunden, KundenRechRab where kunden.kundenNr <> 10110
Anstelle von
Code:
machst Du bitte eine Spaltenliste entsprechend 10110 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00 mit Ausnahme der KundenNr, also eine Liste der Spaltennamen zu 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00.
KundenRechRab.Spalte2 ... Spalte11
[EDIT]hat Schreibfehler gefunden[/EDIT] |
Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü
Danke! Echt Super!
Vielen Dank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz