eine spalte mit ihrer Inhalt in eine andere tabelle kopieren

jetwork

Fleissiger Benutzer
Beiträge
97
Ich habe die folgende 2 Tabellen:

tbl_presentation
presentation_id
presentation_name
besucher_anzahl
konferenz_ref
usw.

tbl_konferenz
konferenz_id
konferenz_name
usw.

Eine Konferenz enthält mindestens eine oder mehrere Präsentationen.

Dieser Entwurf ist aber leider bisschen schlecht. Man zählt in der wirklichkeit nur die Anzahl der Besucher der Konferenzen. Nicht die Anzahl der Besucher jeder Präsentation in einer Konferenz. In diesem Entwurf ist aber leider die Anzahl der Besucher von einer Konferenz für alle Präsentationen dieser Konferenz redundant gespeichert.

Es sind mehr als 16000 Einträge. Ich kann sie alle per Hand nicht korrigieren.

Meine idee ist: über den Fremd Schlüssel Beziehung die beide Tabellen miteinander referenzieren und die Spalte besucher_anzahl von der tbl_presentation in die tbl_konferenz kopieren.

Könnt ihr mir bitte bitte helfen? Wie kann ich so ein sql abfrage schreiben oder in MS Access oder in MySQL dieses Problem lösen.

Danke im Voraus
 
Werbung:
Also erstmal ist mir nicht ganz klar, was du an Daten hast und was du ermitteln möchtest. Die presentation Tabelle hat ein Atribut besucher_anzahl, die konferenz Tabelle nicht. Die Anzahl der Teilnehmer einer Konferenz ist aber nicht zwingend die Summe der Teilnehmer aller Presentationen. Diese Summe könnte man zwar dennoch ermitteln, diese dann aber redundant wieder irgendwo zu speichern entbehrt jeglichem Grundsatz der relationalen Datenhaltung.
 
Sorry für die schlechte Erklärung.

z. B. Es gibt eine Konferenz namens „KonferenzA“. Es hat 100 Besucher.
KonferenzA hat 3 Präsentationen Präsentation_a, Präsentation_b, Präsentation_c.

Das ist bis jetzt so in der Datenbank: Präsentation_a 100 Besucher, Präsentation_b 100 Besucher, Präsentation_c 100 Besucher.
Das ist eigentlich falsch. 100 ist die Anzahl der Besucher der Konferenz A. Die Anzahl der Präsentationen wissen wir nicht. Es ist leider alles falsch entworfen. Ich muss diesen Fehler korrigieren.

Meine Idee ist: über den Fremd Schlüssel Beziehung die beide Tabellen miteinander referenzieren und die Spalte besucher_anzahl von der tbl_presentation in die tbl_konferenz kopieren danach diese Spalte von tbl_presentation löschen.

Wie kann ich das machen? Wie kann ich so ein sql abfrage schreiben oder in MS Access oder in MySQL dieses Problem lösen.
 
Meine Idee ist: über den Fremd Schlüssel Beziehung die beide Tabellen miteinander referenzieren und die Spalte besucher_anzahl von der tbl_presentation in die tbl_konferenz kopieren danach diese Spalte von tbl_presentation löschen.

Mach das. Die Fremdschlüsselbeziehung gibt es doch schon?

Code:
SELECT K.*, P.besucher_anzahl
FROM tbl_presentation AS P
INNER JOIN tbl_konferenz AS K
    ON P.konferenz_ref = K.konferenz_id

Nach außen sollte die Tabelle tbl_presentation dann immer noch identisch aussehen. Du kannst dazu auch gerne eine VIEW benutzen um so Anwendungen den Eindruck zu vermitteln, es wäre alles

Gruß
Hony
 
Werbung:
Wichtig wäre zu wissen, ob die Daten auch alle korrekt sind. Wenn in deinem Beispiel bei Präsentation_c nur 99 Besucher eingetragen sind könnte das ein Problem werden. Das läßt sich aber leicht feststellen: Lege eine neue Spalte in der Tabelle konferenz an und versuche diese mit Daten zu füllen.
Code:
UPDATE    tbl_konferenz
SET        neue_spalte = (    SELECT    DISTINCT besucher_anzahl
                        FROM    tbl_presentation
                        WHERE    konferenz_ref = tbl_konferenz.konferenz_id )
Wenn hier eine Fehlermeldung kommt stimmen die Zahlen schonmal irgendwo nicht überein.
 
Zurück
Oben