【发布时间】:2015-10-24 19:31:05
【问题描述】:
我有三个表:
邮件
+-----+----------+----------------+
| id | chain_id | subject |
+-----+----------+----------------+
| 108 | 108 | aaa |
| 109 | 109 | Chain |
| 110 | 110 | New |
| 111 | 108 | aaa |
| 112 | 108 | Re: Re: aaa |
| 113 | 109 | Chain |
| 114 | 114 | Fwd: Subject |
| 115 | 108 | Fwd: aaa |
| 116 | 108 | Re: aaa |
| 117 | 108 | Fwd: aaa |
+-----+----------+----------------+
链标签
+----+----------+--------+
| id | chain_id | tag_id |
+----+----------+--------+
| 1 | 108 | 15 |
| 2 | 108 | 16 |
+----+----------+--------+
mail_tags
+----+--------+---------+
| id | name | color |
+----+--------+---------+
| 15 | First | #ffdaef |
| 16 | Second | #aed9ff |
+----+--------+---------+
我想从mails表中选择所有记录,mail_tags.color,mail_tags.name,以及具有相同chain_id的记录数量,按mails.chain_id分组,但分组后我想离开最新记录(具有最大 id)。
我设法编写了这个查询
SELECT
*,
COUNT(*) AS quantity
FROM
(SELECT
*
FROM
mails
ORDER BY id DESC) AS t
GROUP BY chain_id
ORDER BY id DESC
它返回按chain_id 分组的最后一行以及该链中的邮件总数,但我不知道如何为每条记录连接标签名称和标签颜色。有些记录可能很少有标签,有些则没有。
【问题讨论】:
-
请根据您的样本发布想要的结果。
-
我正在使用 laravel,我想得到一个对象数组,所以每个对象都有一个嵌套的标签数组。