2010-04-21 3 views
3

здесь является «сбщ» таблицы на MySQLпростой MySQL вопрос запрос

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 

для примера пользователя, чей идентификационный номер 45 входит в систему,

я хочу, чтобы он видел это,

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

как лента новостей

Какой запрос я должен использовать для этого?

ТНХ

ответ

1

Вы можете использовать следующий запрос.

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; 

read Обратите внимание, что это зарезервированное слово в MySQL, так что вы должны заключить его в обратных кавычках. (Source)

Тестовый случай: результат

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); 

Запрос:

+-------------------------------------------------+ 
| 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

благодарит за отличный ответ, а также дает информацию о «чтении», у меня проблема, mysql_num_rows дает 0, хотя у меня есть «read = 0» в базе данных? –

+0

oh ok я исправил его thx –

0

...

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

и 'sent_to' предположительно? –

+0

определенно! –

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 
Смежные вопросы