按ORDER BY列,但在另一列上不同

问题描述 投票:0回答:1

[似乎无法绕过我要为正在使用的监视系统执行的主义查询。我的基础数据库是SQLite。

我的桌子很简单:

CREATE TABLE disk_space_usage (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    disk_name VARCHAR(255) NOT NULL,
    size INTEGER NOT NULL,
    free INTEGER NOT NULL,
    d_profile DATETIME NOT NULL --(DC2Type:datetime_immutable),
    site_id INTEGER NOT NULL
)

每次从数据收集系统执行导入时,我们将为每个“ site_id”创建多个新记录。 “ site_id”的每组记录将具有相同的“ d_profile”值。

我想查询Doctrine以获取可用于给定“ site_id”的最新记录集。

例如,说“ site_id” 12345有5个磁盘,“ d1”,“ d2”,“ d3”,“ d4”和“ d5”,并且该导入已连续运行100天。将有500条与“ site_id” 12345相关的记录。我想获取最新的5。

但是,磁盘的数量将因站点而异,并且随着磁盘的调试和退役,对于任何给定的站点,磁盘的数量可能会有所不同。此外,不能保证每天都会执行导入,因此无论日期和磁盘数量如何,我都需要获取该站点的最新记录集。]

我的查询当前看起来像这样:

return $this->createQueryBuilder('dsu')
    ->select()
    ->distinct()
    ->where('dsu.site = :customer')
    ->groupBy('dsu.diskName')
    ->orderBy('dsu.dProfile', 'DESC')
    ->setParameter('customer', $customerSite)
    ->getQuery()
    ->getResult();

但是,尽管这为该站点返回了一组磁盘,但它们是最旧的而不是最新的记录。

任何人和所有帮助表示赞赏! :)

M

[似乎无法绕过我要为正在使用的监视系统执行的主义查询。我的基础数据库是SQLite。我的表非常简单:CREATE TABLE ...

php sqlite symfony doctrine doctrine-query
1个回答
0
投票

我认为这应该可以解决您的问题。distinc()不是必需的,并且会失败,因为每个输入的某些字段都不同。

© www.soinside.com 2019 - 2024. All rights reserved.