Anzeige

MySQL Abfrage wenn Feld X = leer ...

MySQL Abfrage wenn Feld X = leer ... | PSD-Tutorials.de

Erstellt von philipp1988, 19.11.2008.

  1. philipp1988

    philipp1988 Nicht mehr ganz neu hier

    Dabei seit:
    14.09.2005
    Beiträge:
    248
    Geschlecht:
    männlich
    Ort:
    Braunschweig
    MySQL Abfrage wenn Feld X = leer ...
    Guten Morgen,

    ich habe gestern eine .csv Datei in meine Datenbank importiert, was auch Prima geklappt hat. ( Bestehend aus 3 Datenfeldern )

    Nun möchte ich, da die .csv unvollständig war ( und es per Hand bei circa 20.000 Datensätzen recht lange dauern würde ^^ ) die Datensätze löschen wo Feld 3 leer ist.

    PHP:
    1.  
    2. DELETE FROM datenbanktabelle where feld = '';
    3.  
    Wenn ich dies ausführe werden circa 150 Datensätze gelöscht .. nur viele die noch bei Feld 3 nichts drin haben sind in der Datenbank vorzufinden.
    Habe gemerkt, dass bei den Feldern noch Zeilenumbrüche zu finden sind.
    Gibt es eine Funktion, Datenfeld ( zurzeit Varchar ) der die Steuerzeichen ignoriert?

    Würde mich auf ein Tipp freuen..

    Mfg ;)
     
    #1      
  2. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    MySQL Abfrage wenn Feld X = leer ...
    AW: MySQL Abfrage wenn Feld X = leer ...

    Keine Ahnung ob das funktioniert (nur ausführen, wenn du zuviel gelöschte Einträge auch wiederherstellen kannst), aber spontan würde ich das machen:

    PHP:
    1.  
    2. DELETE FROM `datenbanktabelle`
    3. WHERE `id` IN ( SELECT `id`
    4.                 FROM `datenbanktabelle`
    5.                 WHERE `feld` REGEXP '^[[:space:]]*$');
    6.  
    Also mit einer Subquery erstmal alle IDs holen, dessen feld nur Tabs/Leerzeichen/Zeilenumbrüche hat, dann alle Zeilen löschen die in diesem Subquery zurückgegeben wurden.


    Duddle
     
    #2      
  3. philipp1988

    philipp1988 Nicht mehr ganz neu hier

    Dabei seit:
    14.09.2005
    Beiträge:
    248
    Geschlecht:
    männlich
    Ort:
    Braunschweig
    MySQL Abfrage wenn Feld X = leer ...
    AW: MySQL Abfrage wenn Feld X = leer ...

    PHP:
    1.  
    2. DELETE FROM `datenbank`
    3. WHERE `id` IN ( SELECT `id`
    4.                 FROM ( select * from `datenbank` ) as datenbank1
    5.                 WHERE `feld` REGEXP '^[[:space:]]*$');  
    6.  
    7.  
    Musste die Abfrage ein bisschen abändern damit es ohne Errors geht.

    Komischerweise löscht er zwar Datensätze aber mehr als gewünscht :X

    Habe circa 1000 Datensätze wo in Feld was drin steht.. aber am Schluss hab ich nur noch ca 600 oO und dann immernoch Datensätze wo etwas leer ist.


    Tipps?
    wäre dankbar :)

    mfg
     
    #3      
  4. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    MySQL Abfrage wenn Feld X = leer ...
    AW: MySQL Abfrage wenn Feld X = leer ...

    Bei meiner Testtabelle funktioniert es genau so wie ich es geschrieben habe.

    Was kamen denn für Fehler? Das Forum hat kein "Glaskugel"-Feature.

    Du könntest beispielsweise statt dem DELETE mal ein SELECT * machen, dann siehst du die ausgewählten Datensätze und kannst nach Auffälligkeiten suchen.


    Duddle
     
    #4      
  5. philipp1988

    philipp1988 Nicht mehr ganz neu hier

    Dabei seit:
    14.09.2005
    Beiträge:
    248
    Geschlecht:
    männlich
    Ort:
    Braunschweig
    MySQL Abfrage wenn Feld X = leer ...
    AW: MySQL Abfrage wenn Feld X = leer ...

    #1093 - You can't specify target table 'kunden_newsletter' for update in FROM clause

    Edit:

    Habe es nun viel einfacher gelöst :) In jedem Datenbankfeld war ein \r\n enthalten.
    Habe einfach die Datenbank in .sql exportiert und dann mit Suchen & Ersetzen gearbeitet.

    Leider hat die Variante von oben nicht funktioniert.

    Danke dir aber trotzdem für deine Mühen.

    Mfg :)
     
    Zuletzt bearbeitet: 24.11.2008
    #5      
x
×
×
teststefan