Как мне сгруппировать столбцы в MySQL и избавиться от повторяющихся идентификаторов? - PullRequest
0 голосов
/ 26 февраля 2011

MySQL

+-----+-----+
| id1 | id2 |
+-----+-----+
|  1  |  1  |
+-----+-----+
|  1  |  1  |
+-----+-----+
|  1  |  2  |
+-----+-----+
|  2  |  1  |
+-----+-----+

PHP

$a = mysql_query("SELECT id1, COUNT(id2) AS count FROM table GROUP BY id1");
while($b = mysql_fetch_assoc($a))
{
    echo 'id1: '.$b['id1'].' | count: '.$b['count'].'<br />';
}

Вывод:

id1: 1 | count: 3
id1: 2 | count: 1

Но как удалить повторяющиеся числа в столбце id2 для каждого id1?Например, счет, где id1 равен 1 , должен быть 2 вместо 3, потому что я хочу посчитать 1 в id2 только один раз, а не дважды.

Итак, на самом деле результат должен быть:

id1: 1 | count: 2
id1: 2 | count: 1

Надеюсь, это имеет смысл.

Ответы [ 3 ]

1 голос
/ 26 февраля 2011

SELECT id1, COUNT(DISTINCT id2) ...

0 голосов
/ 26 февраля 2011

Использовать подзапрос:

SELECT 
  t.id1,COUNT(t.id2) AS count
FROM
  (SELECT DISTINCT id1,id2 FROM table) as t
GROUP BY 
  t.id1
0 голосов
/ 26 февраля 2011
SELECT id1, COUNT(DISTINCT id2) AS count FROM table GROUP BY id1
...