AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL - Felder in gleiche Tabelle kopieren - anderer Schlüssl
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Felder in gleiche Tabelle kopieren - anderer Schlüssl

Ein Thema von Umasu007 · begonnen am 20. Feb 2009 · letzter Beitrag vom 20. Feb 2009
Antwort Antwort
Umasu007

Registriert seit: 20. Feb 2009
4 Beiträge
 
#1

SQL - Felder in gleiche Tabelle kopieren - anderer Schlüssl

  Alt 20. Feb 2009, 09:14
Datenbank: SQL • Zugriff über: SQL Management
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü

  Alt 20. Feb 2009, 09:21
Z.B. Insert into ... select Btw. Ich würde einen syntetischen Schlüssel nehmen
Markus Kinzler
  Mit Zitat antworten Zitat
Umasu007

Registriert seit: 20. Feb 2009
4 Beiträge
 
#3

Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü

  Alt 20. Feb 2009, 09:25
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
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü

  Alt 20. Feb 2009, 09:28
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?
  Mit Zitat antworten Zitat
Umasu007

Registriert seit: 20. Feb 2009
4 Beiträge
 
#5

Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü

  Alt 20. Feb 2009, 09:32
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!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü

  Alt 20. Feb 2009, 09:33
Hallo,

so könnte das gehen:
SQL-Code:
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,
'Rabattas 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 */
Spalte1 bis Spalte11 ersetzt Du bitte durch die Namen Deiner Zieltabelle.

Eine Alternative wäre:
select Kunden.KundenNr, KundenRechRab.Spalte2 ... Spalte11 from Kunden, KundenRechRab 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.
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:
Kundennummer 1 1 Rabatt 904100 0 1 0 1 4.50 1 50.00
besteht.
Mit insert into Zieltabelle select Kunden.KundenNr, KundenRechRab.Spalte2 ... Spalte11 from Kunden, KundenRechRab where kunden.kundenNr <> 10110 kannst Du die Daten in die Zieltabelle übernehmen.
Anstelle von
Code:
KundenRechRab.Spalte2 ... Spalte11
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.

[EDIT]hat Schreibfehler gefunden[/EDIT]
  Mit Zitat antworten Zitat
Umasu007

Registriert seit: 20. Feb 2009
4 Beiträge
 
#7

Re: SQL - Felder in gleiche Tabelle kopieren - anderer Schlü

  Alt 20. Feb 2009, 09:57
Danke! Echt Super!

Vielen Dank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz