2010-04-21 6 views
3

est ici la table "msg" sur mysqlquestion de requête MySQL facile

sent_to customer msg  read 
------- -------- ------ ----- 
45   3  bla  0 
34   4  bla  1 
34   6  bla  0 
45   3  bla  0 
56   7  bla  1 
45   8  bla  0 

par exemple utilisateur dont le numéro d'identification est de 45 journaux dans,

je veux lui voir cela,

you have 2 unread msg to your "number 3" customer 
you have 1 unread msg to your "number 8" customer 

comme un fil de nouvelles

quelle requête dois-je utiliser pour cela?

thx

Répondre

1

Vous pouvez utiliser la requête suivante.

SELECT CONCAT('You have ', 
       COUNT(`read`), 
       ' unread msg to your number ', 
       customer, 
       ' customer') AS news 
FROM  msg 
WHERE `read` = '0' AND `sent_to` = '45' 
GROUP BY customer; 

Notez que read est un mot réservé dans MySQL, vous devez l'enfermer dans des accents graves. (Source)

Cas de test:

CREATE TABLE msg (
    `sent_to` int, 
    `customer` int, 
    `msg`  varchar(10), 
    `read`  int 
); 

INSERT INTO msg VALUES(45, 3, 'bla', 0); 
INSERT INTO msg VALUES(34, 4, 'bla', 1); 
INSERT INTO msg VALUES(34, 6, 'bla', 0); 
INSERT INTO msg VALUES(45, 3, 'bla', 0); 
INSERT INTO msg VALUES(56, 7, 'bla', 1); 
INSERT INTO msg VALUES(45, 8, 'bla', 0); 

résultat de la requête:

+-------------------------------------------------+ 
| news           | 
+-------------------------------------------------+ 
| You have 2 unread msg to your number 3 customer | 
| You have 1 unread msg to your number 8 customer | 
+-------------------------------------------------+ 
2 rows in set (0.00 sec) 
+0

merci pour une bonne réponse, et aussi donner des informations sur "lire", j'ai un problème, mysql_num_rows donne 0 même si j'ai "read = 0" dans la base de données? –

+0

oh ok je l'ai fixé thx –

0

...

select count(*), customer from msg where read = 0 group by customer 
+0

et 'sent_to' sans doute? –

+0

très certainement! –

1
SELECT COUNT(read), customer FROM msg WHERE read = 0 AND sent_to = '45' GROUP BY customer; 
1
select count(sent_to), customer 
from msg 
where read < 1 
and sent_to = 45 
group by customer