WernerK: Umkopieren von Zeilen in andere Tabelle

Hallo,
ich möchte von einer Tabelle Daten in eine andere Tabelle (temptab) umkopieren. Aber nur die Zeilen in denen auch wirklich Daten stehen, die also nicht leer sind.

maintable
-------------------------------------------------------
id,name,vname,ort,plz,strasse
1,Dampf,Hans,Irgendwo,11111,Beispielstr.4
2,Müller,,Mühlhausen,,,
3,,,,,,

Mit folgender WHERE Klausel geht es nicht, weil hier ja nur Zeile mit id 1 kopiert wird.
Zeile mit Id 2 benötige ich aber auch, auch wenn nicht alle Spalten befüllt sind.

INSERT INTO temptab (id,name,vname,ort,plz,strasse)
SELECT id,name,vname,ort,plz,strasse from maintable
WHERE
name != ''
AND vname != ''
AND ort != ''
AND plz != ''
AND strasse != ''

Kann man dies so überhaupt in einer SQL Abfrage lösen?

Gruss
Werner

  1. Kann man dies so überhaupt in einer SQL Abfrage lösen?

    Such mal nach SQL lernen. Da gibt es einige gute Tutorials.
    Unabhängig davon welchen Datenbankdialekt man braucht.

    Dein Beispiel macht genau was es soll. Sonst muss es anders formuliert werden.

  2. Hallo,

    Kann man dies so überhaupt in einer SQL Abfrage lösen?

    Ja, kann man.
    versuch mal die einzelnen Felder mit Oder zu verknüpfen und das Ergebnis zu negieren.

    Gruß
    Kalk

  3. Hi,

    id,name,vname,ort,plz,strasse
    1,Dampf,Hans,Irgendwo,11111,Beispielstr.4
    2,Müller,,Mühlhausen,,,
    3,,,,,,

    Mit folgender WHERE Klausel

    WHERE
    name != ''
    AND vname != ''
    AND ort != ''
    AND plz != ''
    AND strasse != ''

    geht es nicht, weil hier ja nur Zeile mit id 1 kopiert wird.

    Natürlich, dass ist ja auch die einzige Zeile, in der nicht *alle* Felder einen Inhalt haben, was deine WHERE-Klausel aber fordert.

    Zeile mit Id 2 benötige ich aber auch, auch wenn nicht alle Spalten befüllt sind.

    Also willst du eine andere Bedingung formulieren – nämlich die, dass es nicht sein darf, dass alle Felder leer sind.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?