[MySQL oder andere] Tabelle füllen, mit Daten einer anderen Tabelle



  • Hey ich hoffe ihr könnt mir helfen.

    Mein Problem:
    Ich habe eine Datenbank übernommen die mit unzähligen Daten gefüllt ist.
    Ich möchte eine neue Tabelle erstellen: [Artikelnummer] [Bezeichnung] [Beschreibung]

    Ich möchte eine neue Tabelle anlegen die drei Datensätze beinhalten soll, [Artikelnummer] und [Bezeichnung] sollen aus der bestehenden Tabelle kommen. Das Tabellenfeld [ Beschreibung] soll zusätzlich über ein Webformular gefüllt werden.

    Die bestehende Tabelle beinhaltet unzählige Datenfelder, diese Tabelle wird durch eine *.csv Dateien gefüllt auf deren Inhalt ich kein Einfluss habe. Leider handelt es sich dort auch um zirka 40 MB Daten. Die Tabelle wird immer weiter gefüllt, und erweitert und die Struktur der Tabelle kann ich nicht ändern.

    Hier beginnt mein Problem denn es gibt keinen eindeutigen Schlüssel mit dem ich arbeiten kann. Alle Datensätze sind zum größten Teil mit kleinen Unterschieden doppelt vorhanden.

    Mit SELECT DISTINCT Artikelnummer, Bezeichnung FROM table

    kann die Daten die ich brauche eindeutig auslesen

    Wie bekomme ich jetzt aber die Verbindung zwischen der leeren und der gefüllten Datenbank hin?
    Gibt es eine Abfrage, mit der ich abfragen kann ( ist der Datensatz in der neuen Tabelle vorhanden dann lese die Daten aus Ihr, wenn nicht nimm den Datensatz aus der anderen Tabelle)

    Mit freundlichen Grüßen
    Ronny



  • eventuell kannst du ein sql merge verwenden, falls es dein dbms unterstützt.



  • Bitte sprich nicht von Datenbank sondern von Tabelle oder Tabelle in einer Datenbank.
    Du füllst einen leeren Table durch ein volle mit:

    INSERT INTO leertable SELECT feld1,feld2 from volltable where x = y

    Hierbei muss in der Tabelle leertable die selbe anzahl spalten sein wie beim select angegeben.
    Hast du ein Autoinc in der leeren dann

    INSERT INTO leertable SELECT '',feld1,feld2 from volltable where x = y

    Wobei von einer autoinc an erster stelle in der leertabelle auszugehen ist.

    Ronny1978 schrieb:

    Wie bekomme ich jetzt aber die Verbindung zwischen der leeren und der gefüllten Datenbank hin?
    Gibt es eine Abfrage, mit der ich abfragen kann ( ist der Datensatz in der neuen Tabelle vorhanden dann lese die Daten aus Ihr, wenn nicht nimm den Datensatz aus der anderen Tabelle)

    Mit freundlichen Grüßen
    Ronny

    Du kannst ein UNION machen und dann immer den ersten Datensatz nehmen.

    Mit UNION fragst du beide Tabelle ab.
    Ist in der primären ein Datensatz ist dieser der erste.
    Ist in der 2ten Tabelle ein Datensatz ist dieser eben der 2te.
    Du nimmst den ersten.

    Ist nur in der 2ten Tabelle ein Datensatz dann ist eben dieser der erste.
    u.s.w.

    Um Sicherheit zu haben kannst du noch ein Controlfeld einbauen.

    SELECT *,'erstetabelle' AS control from ersttable UNION SELECT *,'zweitetabelle' AS control from zweittable



  • Hey,
    das hat geholfen 😉 . Danke für deine Hilfe.

    Mit freundlichen Grüßen
    Ronny


Anmelden zum Antworten