All pastes #802559 Raw Edit

grouping

public text v1 · immutable
#802559 ·published 2007-11-30 12:08 UTC
rendered paste body
mysql> describe note;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| code  | varchar(30) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

mysql> describe tag;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | NO   |     | NULL    |       |
| tagname | varchar(25) | NO   |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> select * from note;
+----+--------+
| id | code   |
+----+--------+
|  2 | Note A |
|  3 | Note A |
|  4 | Note A |
|  5 | Note A |
|  6 | Note A |
|  7 | Note A |
|  8 | Note B |
|  9 | Note B |
| 10 | Note B |
+----+--------+
9 rows in set (0.00 sec)
The Setup

mysql> select * from tag;
+----+---------+
| id | tagname |
+----+---------+
|  1 | tag1    |
|  2 | tag1    |
|  2 | tag2    |
|  3 | tag3    |
|  4 | tag1    |
|  4 | tag2    |
|  5 | tag3    |
|  6 | tag1    |
|  7 | tag2    |
|  8 | tag1    |
|  8 | tag2    |
|  8 | tag3    |
|  9 | tag1    |
+----+---------+
13 rows in set (0.00 sec)

A case of notes, having tage, so each note's tags are tag.id=note.id.  I am trying to group count notes with both the same code and the same tags.

select code, group_concat( tagname order by tagname separator ', ') as tags from note, tag where note.id=tag.id  group by tag.id order by code;

Yields

+--------+------------------+
| code   | tags             |
+--------+------------------+
| Note A | tag1, tag2       |
| Note A | tag3             |
| Note A | tag1, tag2       |
| Note A | tag3             |
| Note A | tag1             |
| Note A | tag2             |
| Note B | tag1, tag2, tag3 |
| Note B | tag1             |
+--------+------------------+

which is *close*, but I need a count field and lines with both the same code and 'tags' grouped