Hallo zusammen,
ich habe mal wieder eine Frage.
Folgende zwei (MS)SQL-Anweisungen habe ich vor mir:
Code:
SELECT COUNT(i1.id) +
(SELECT count(i2.id) FROM info AS i2 WHERE i2.ap2 != '' AND i2.ap2 IS NOT NULL) +
(SELECT count(i3.id) FROM info AS i3 WHERE i3.ap3 != '' AND i3.ap3 IS NOT NULL) AS alle
FROM info AS i1
WHERE (i1.ap1 != '' AND i1.ap1 IS NOT NULL)
Code:
SELECT SUM(i1+i2+i3) AS alle FROM
(SELECT
CASE WHEN i.ap1 = '' OR i.ap1 IS NULL THEN 0 ELSE 1 END i1
,CASE WHEN i.ap2 = '' OR i.ap2 IS NULL THEN 0 ELSE 1 END i2
,CASE WHEN i.ap3 = '' OR i.ap3 IS NULL THEN 0 ELSE 1 END i3
FROM info AS i) y
Machen im Prinzip das gleiche, sie Zählen die leeren Felder in einer Tabelle.
Jetzt bin ich mir nicht schlüssig was "schöner" ist. Ich tendiere zur zweiten Lösung, da diese weniger Abfragen durch die Tabelle jagt. Was sagt ihr, bzw. kann man das noch besser lösen?