PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Abfrage COUNT ob alle User Nachricht gelesen (http://www.selfphp.de/forum/showthread.php?t=24286)

Tikiwiki 19.07.2011 09:39:01

Abfrage COUNT ob alle User Nachricht gelesen
 
Hallo zusammen,

Ich stehe wieder einmal vor einer Aufgabe die ich nur zum Teil gelöst habe und bräuchte Eure Hilfe.
Ich benötige zwei Abfragen, ob verschiedene Nachrichten von allen zugeteilten Usern zur Nachricht gelesen wurde oder ob ein oder mehrere ungelesen sind.

Tabelle
User; Nachricht; gelesen (1=gelesen, 0=ungelesen)
1 ; 20 ; 1
2 ; 20 ; 0
3 ; 25 ; 1
1 ; 25 ; 1
4 ; 25 ; 1

Ergebnis sollte sein:
1. Anzahl noch offener Nachrichten: 1
2. Anzahl von allen Users gelesen: 1
Sobald in den Nachrichten eine 0 vorkommt kommt er zu Pkt 1, nur wenn alle 1 zur Nachricht besitzen kommt er zu Pkt. 2.

Mein erster Ansatz (aber diese Kombination funktioniert nur bedingt):
PHP-Code:

SELECT COUNT(DISTINCT(nachricht)) FROM TabelleNachricht WHERE nachricht IFNULL(0,0)

SELECT COUNT(DISTINCT(nachricht)) FROM TabelleNachricht WHERE nachricht IFNULL(1,1

Hoffe ich habe mein Problem für Euch gut beschrieben und bin schon mal auf dem richtigen Weg.

Danke
Dietmar

derNichtGlaubt 19.07.2011 12:24:06

AW: Abfrage COUNT ob alle User Nachricht gelesen
 
Hi!
Das Problem vereinfacht sich wenn wir folgendes berücksichtigen:
1. es ist irrelevant wieviele die Nachricht gelesen haben, solange sie einer nicht gelesen hat kommt sie in die erste Gruppe.
2. die Zahl in der zweiten Gruppe ergibt sich aus der Gesamtzahl der Nachrichten abzüglich der Anzahl der ersten Gruppe.

die Abfragen könnten ungefähr so lauten:

SELECT COUNT(Nachricht) FROM TabelleNachricht WHERE gelesen == 0 GROUP BY Nachricht

und

SELECT COUNT(Nachricht) FROM TabelleNachricht GROUP BY Nachricht

Tikiwiki 19.07.2011 13:01:33

AW: Abfrage COUNT ob alle User Nachricht gelesen
 
Hi,
danke für die Antwort.
Du hast mir sehr geholfen. Ich denke einfach zu kompliziert.

Falls es doch noch eine Problemchen auftauchen sollte, werde ich mich noch mal kurz melden.

Merci
Dietmar


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:11:37 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.