2015-03-08 4 views
0

У меня есть база данных, как показано ниже.MySQL Подсчитайте как строки

mysql> select * from wants where itemname='lamp' order by location; 
+------+--------------------+-------------+----------+----------+----------+ 
| sess | username   | room  | image | item  | priority | 
+------+--------------------+-------------+----------+----------+----------+ 
| 33 | [email protected]  | Family Room | DSC00649 | Lamp  |  1 | 
| 235 | [email protected] | Family Room | DSC00649 | Lamp  |  2 | 
| 60 | [email protected] | Foyer  | DSC00527 | Lamp  |  1 | 
| 197 | [email protected] | Foyer  | DSC00527 | Lamp  |  2 | 
| 189 | [email protected] | Living Room | DSC00827 | Lamp  |  1 | 
| 273 | [email protected]  | Living Room | DSC00827 | Lamp  |  2 | 
+------+--------------------+-------------+----------+----------+----------+ 
6 rows in set (0.00 sec) 

То, что я пытаюсь сделать, - это подсчитать количество предметов за номер.

При запуске запроса он должен выглядеть следующим образом:

2 Family Room Lamp [email protected] [email protected] 
2 Foyer Lamp [email protected] [email protected] 
2 Living Room Lamp [email protected] [email protected] 

Текущий запрос:

$result1 = mysql_query("SELECT username, location, image, itemname, COUNT(itemname) x FROM wants GROUP BY itemname HAVING x >1 order by location ASC") 

Это даст следующий результат:

6 Family Room Lamp [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] 

Я пытался использовать Concat чтобы получить счет первых двух строк, но это не помогло,

Как я могу разбить их, чтобы номера читались отдельно, когда имя элемента совпадает?

ответ

1

Вам необходимо указать group by номер, а не пункт. Кроме того, кажется, что вы ищете group_concat в список пользователей:

select count(*), 
     room, 
     group_concat(username) 
from wants 
where item ='lamp' 
group by room 
Смежные вопросы