亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

教義 按列排序,但在另一列上不同

教義 按列排序,但在另一列上不同

PHP
白衣非少年 2022-08-19 11:03:05
似乎無法將我正在嘗試為我正在處理的監視系統執行的 Doctrine 查詢包絡在腦后。我的底層數據庫是 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”創建多個新記錄?!皊ite_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();但是,雖然這會返回此站點的一組磁盤,但它們是最舊的,而不是最新的記錄。任何和所有的幫助贊賞!:)
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

我認為這應該可以解決您的問題。

不是必需的,并且會失敗,因為某些字段對于每個條目都是不同的。distinc()


我指定要選擇的數據僅具有具有相同值的字段。

要知道最新的,我曾經選擇過。

這將使它,所以你只得到唯一/不同的結果。

然后返回標量結果(數組而不是對象)。MAX()dProfilgroupBy()


return $this->createQueryBuilder("disque")

            ->select("disque.id, disque.diskName, disque.size, disque.free, MAX(disque.dProfile) AS dProfile")

            ->andWhere("disque.site = :customer")

            ->groupBy("disque.diskName")

            ->orderBy("disque.dProfile", "DESC")

            ->setParameter('customer', $customerSite)

            ->getQuery()

            ->getScalarResult();


查看完整回答
反對 回復 2022-08-19
  • 1 回答
  • 0 關注
  • 107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號