Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Anzahl zweier bestimmter Eigenschaften listen??? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Anzahl zweier bestimmter Eigenschaften listen???


 
jellp
30-04-2004, 16:28 
 
Hallo!

Ich habe ein Problem bei der Abfrage meiner Datenbank.
Hier eine stichpunktartige Erklärung des Problems (ist am übersichtlichsten).

Vorgabe:
Tabelle -KUNDE- beinhaltet allgemeine Informationen der Kunden.
Tabelle -BEITRAG- mehrere Beiträge der Kunden in zwei verschiedenen Sprachen. beitrag.sprache ist entweder D oder GB.

Wunschergebnis:
Ich würde mir gern eine Liste ALLER Kunden mit der Anzahl der Beiträge sortiert nach Sprachen ausgeben lassen. Also ungefähr so:

Kunde x, 5 Beiträge D, 3 Beiträge GB
Kunde y, 8 Beiträge D, 2 Beiträge GB
Kunde z, 4 Beiträge D, 0 Beiträge GB

Versuch:
SELECT kunde.id,
count(beitrag.sprache="D") AS anzahlD,
count(beitrag.sprache="GB") AS anzahlGB,
FROM kunde LEFT JOIN beitrag ON kunde.id=beitrag.id
GROUP BY kunde.id
ORDER BY kunde.id

... geht aber nicht!

Resultat:
Es wird nicht zwischen D und GB unterschieden. anzahlD und anzahlGB geben die Summer beider Sprachen des Kunden zurück.
Ich erhalte statt (5 D + 3 GB) ... (8 D +8 GB)

Kann mir jemand weiterhelfen?

Vielen Dank schon jetzt
Maik

 
TobiaZ
30-04-2004, 16:32 
 
guck dir mal if() an. als idee

 
chansel0049
30-04-2004, 16:47 
 
Ja, ja das sind die liebsten

Das kann so auch nicht funzent da count lediglich auf NULL oder NICHT NULL prüft !

Alternative wäre in dem Addierst und zwar berechnete Werte in der Art
[PHP]
SELECT kunde.id,
sum(IF (beitrag.sprache="D", 1, 0) ) AS anzahlD,
sum(IF (beitrag.sprache="GB", 1, 0) ) AS anzahlGB,
FROM kunde LEFT JOIN beitrag ON kunde.id=beitrag.id
GROUP BY kunde.id
ORDER BY kunde.id

 
TobiaZ
30-04-2004, 16:56 
 
was ich meine! ;)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:55 Uhr.