# Leere Felder eines Datensatzes zählen



## orgmac (14. April 2007)

Hallo,

ich weiß nicht, ob dieses Problem nur mit SQL-Kenntnissen lösbar ist, deswegen schreib ich gleich dazu, daß es sich um den Einsatz in einer PHP Anwendung handelt.

Ich möchte die Anzahl der (nicht-)ausgefüllten Felder eines Datensatzes innerhalb einer Tabelle zählen. Das erklärt sich am besten an einem kurzen Beispiel:

Die Tabelle für eine Fahrzeugliste hat meinetwegen 10 Spalten, in welche die Eigenschaften des Fahrzeugs eingetragen werden (Baujahr, Fahrgestellnummer etc.pp.). Wurden für Fahrzeug-ID '1' nur 6 dieser Datenfelder ausgefüllt, möchte ich ausgegeben haben, daß 4 Felder für diese Fahrzeug-ID noch fehlen.

Danke und allen ein schönes Wochenende


----------



## tplanitz (14. April 2007)

Hi,

also wie das mit php genau geht weiß ich nicht. Das Query dazu könnte aber so sein
kein_eintrag entspricht dann der summe der attribute eines datensatzes die IS NULL hatten:


```
SELECT id, bj+fn+m kein_eintrag
 FROM
 (
    SELECT id, Count (CASE WHEN Baujahr IS NULL THEN '1' END ) bj 
    ,  Count (CASE WHEN Fahrgestellnummer IS NULL THEN '1' END ) fn
    ,  Count (CASE WHEN Margke IS NULL THEN '1' END ) m
    FROM t_fahrzeuge
    GROUP BY id
 )
```


----------



## orgmac (14. April 2007)

Hi tplanitz,

vielen Dank für deinen Vorschlag, ich mach mir gleich meine Gedanken dazu.


----------



## bri17 (17. April 2007)

Hallo,

ich denke, das hier sollte reichen:

```
SELECT t.id, t.bj+t.fn+t.m anzahl_leere_felder
  FROM ( SELECT id
              , CASE WHEN f.baujahr IS NULL THEN 1 ELSE 0 END bj
              , CASE WHEN f.fahrgestellnr IS NULL THEN 1 ELSE 0 END fn
              , CASE WHEN f.marke IS NULL THEN 1 ELSE 0 END m
           FROM fahrzeuge f
       ) t
```
Grüße Berit.


----------

