Teile von einer Tabelle in einer anderen Tabelle kopieren



  • Hallo,

    ich habe zb. eine tabelle "verkaufen" die folgendermaßen ausschaut:

    Nr Artikel Preis
    20 Schere 2,5
    21 Kleber 3,0

    die zweite Tabelle "kunde" schaut so aus:

    Nr Artikel Preis Kunde statusbezahlt

    diese ist noch leer und soll sich eben durch einen "kopier" befehl von zb. Nr 20 füllen.

    mein letzter versuch sah so aus:
    INSERT INTO kunde(Nr, Artikel, Preis, Kunde, statusbezahlt) VALUES (
    FROM verkaufen WHERE Nr="20",
    FROM verkaufen WHERE Nr="20",
    FROM verkaufen WHERE Nr="20",
    'kundenname',
    'bezahlung offen');

    natürlich kann dies nicht funktionieren, da bei FROM verkaufen WHERE Nr="20" etwas fehlt oder falsch ist...

    aber wie könnte ich das realisieren?

    Wäre echt klasse wenn ihr mir helfen könntet.

    MfG



  • INSERT [kunde] ([Nr], [Artikel], [Preis], [Kunde], [statusbezahlt])
        VALUES ( 
            (SELECT [Nr] FROM [verkaufen] WHERE Nr='20'), 
            (SELECT [Artikel] FROM [verkaufen] WHERE Nr='20'), 
            (SELECT [Preis] FROM [verkaufen] WHERE Nr='20'), 
            'kundenname', 
            'bezahlung offen'
        );
    

    ...oder kürzer...

    INSERT [kunde] ([Nr], [Artikel], [Preis], [Kunde], [statusbezahlt])
        SELECT
            [Nr],
            [Artikel],
            [Preis],
            'kundenname', 
            'bezahlung offen'
        FROM [verkaufen]
        WHERE [Nr] = '20'
        ;
    

    Und bitte verwende das nächste mal [code] Tags.
    BTW: ist [Nr] bei dir wirklich ein (var)char-Feld??? Oder tust du grundsätzlich String-Werte mit " escapen? 😕



  • Ja, das mit den "" hab ich in cpp aber muss schon ' sein.

    Danke dir, genau das habe ich gesucht, klasse! 😃

    Noch eine kleine Frage:

    Wie kann ich den inhalt einer Zelle auslesen und diese in einem string speichern? mit query usw.



  • Du solltest Dein DB-Design überlegen. Stichwort Normalisierung.
    Wozu muss man die gleichen Daten in einer neuen Tabelle haben.


Anmelden zum Antworten