php - 需要帮助尝试在 SQL 查询中提取每个客户端 ID 的最新注释

标签 php mysql

Possible Duplicate:
Retrieving the latest note (by timestamp) in a single query from a 1:n table

您好,不知道我应该在这里做什么,因为从来没有必要进行这样的查询。

我需要做的是将名为 _notes 的表与 _leads 连接起来,

每个客户端都有一个唯一的引用,并且他们在 _notes 表中有多个注释。

我想要做的是生成一个查询,该查询将显示 _leads 中的所有字段以及每个客户的最新注释。

到目前为止我所拥有的是,

SELECT
_leads.ID,
_leads.Title,
_leads.Firstname,
_leads.Lastname
_notes.Note,
_notes.`Date`
FROM
_leads
Left Join _notes ON _leads.ID = _notes.Lead_ID
GROUP BY _leads.ID

这仅显示每个客户的第一个注释, 有没有办法让查询执行我想要的操作。

最佳答案

子查询是我解决此类困难的常用解决方案

SELECT
    _leads.ID,
    _leads.Title,
    _leads.Firstname,
    _leads.Lastname,
    n.Note,
    n.`Date`
FROM _leads
LEFT JOIN (
    SELECT 
        _notes.Lead_ID,
        _notes.Note,
        _notes.`Date`
    FROM _notes
    ORDER BY `Date` DESC
) AS n
ON _leads.ID = n.Lead_ID
GROUP BY _leads.id

如果您的 _notes 表也有一个 ID 字段,那么下面的内容也可能很有用,并且使用子查询返回与每个潜在客户关联的最高 ID,然后根据该字段将 _notes 整体连接起来会稍微干净一些

 SELECT
    l.ID,
    l.Title,
    l.Firstname,
    l.Lastname,
    _notes.Note,
    _notes.`Date`
FROM (
    SELECT
        _leads.ID,
        _leads.Title,
        _leads.Firstname,
        _leads.Lastname,
        MAX(_notes.ID) AS Note_ID
    FROM _leads
    LEFT JOIN _notes
    ON _notes.Lead_ID = _leads.ID
    GROUP BY _leads.ID
) AS l
LEFT JOIN _notes
ON _notes.ID = l.Note_ID

关于php - 需要帮助尝试在 SQL 查询中提取每个客户端 ID 的最新注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397381/

相关文章:

php - 使用C++加速PHP

mysql - 似乎无法将 MySQL 查询转换为 Laravel 查询生成器

php - jquery 提交没有页面刷新问题

PHP 将 Excel 导入数据库(xls 和 xlsx)

php - 使用列和行索引设置单元格背景

sql - MySQL 中的外键?

PHP UNIX 时间戳 int(10) DST

php - 网站访问数据库设计

mysql - 获取每个月最后一条记录的值(Django)

MySQL 表组织和优化 (Rails)