Table des matières
Contenu de la question
Solution de contournement
Maison développement back-end Golang GORM renvoie une liste de résultats ou un graphique de résultats regroupés par identifiant

GORM renvoie une liste de résultats ou un graphique de résultats regroupés par identifiant

Feb 12, 2024 am 11:54 AM
聚合函数

GORM 返回结果列表或按 id 分组的结果图

L'éditeur PHP Xinyi vous présente aujourd'hui une fonction importante de GORM, qui consiste à renvoyer une liste de résultats ou un graphique de résultats regroupés par identifiant. GORM est une puissante bibliothèque d'accès aux bases de données qui fournit des méthodes riches pour interroger et exploiter des bases de données. En utilisant GORM, nous pouvons facilement obtenir une liste de résultats de la base de données et également les regrouper par identifiant et renvoyer un graphique des résultats. Cette fonction est très pratique dans le développement réel et peut nous aider à traiter plus facilement les résultats des requêtes de base de données. Ensuite, apprenons comment utiliser GORM pour implémenter cette fonction !

Contenu de la question

Essentiellement, en utilisant gormdb, mon code actuel ressemble à ceci :

res = []*modelExample

DB.Model(&modelExample{}).
        Order("task_id ").
        Find(res)
Copier après la connexion

Ce que j'ai fait avec res, c'est que je bouclerais et ajouterais manuellement les modèles avec le même task_id à une liste, puis j'ajouterais cette liste pour qu'elle soit traitée. La raison pour laquelle je dois faire cela est que je dois effectuer certaines opérations spécifiques sur des colonnes spécifiques que je dois extraire et que ces opérations ne peuvent pas être effectuées dans gorm.

Cependant, existe-t-il un moyen de faire cela plus efficacement, me permettant de revenir comme une liste de listes, puis de pouvoir effectuer une boucle et effectuer l'opération sur chaque élément de la liste ?

Solution de contournement

Vous devriez pouvoir utiliser l'extrait de code suivant pour répondre à vos besoins :

package main

import (
    "fmt"

    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

type modelExample struct {
    TaskId int
    Name   string
}

func main() {
    dsn := "host=localhost user=postgres password=postgres dbname=postgres port=5432 sslmode=disable"
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }

    db.AutoMigrate(&modelExample{})

    // here you should populate the database with some data

    // querying
    res := make(map[int][]modelExample, 0)
    rows, err := db.Table("model_examples").Select("task_id, name").Rows()
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    // scanning
    for rows.Next() {
        var taskId int
        var name string
        rows.Scan(&taskId, &name)
        if _, isFound := res[taskId]; !isFound {
            res[taskId] = []modelExample{{taskId, name}}
            continue
        }
        res[taskId] = append(res[taskId], modelExample{taskId, name})
    }

    // always good idea to check for errors when scanning
    if err = rows.Err(); err != nil {
        panic(err)
    }

    for _, v := range res {
        fmt.Println(v)
    }
}
Copier après la connexion

Après avoir terminé la configuration initiale, examinons de plus près la section requête.
Tout d’abord, vous obtiendrez tous les enregistrements de la table. L'enregistrement que vous obtenez est stocké dans la variable rows.
en for 循环中,您扫描所有记录。每条记录都将添加为新的地图条目或附加到现有条目(如果 taskid existe déjà dans la carte).
C'est le moyen le plus simple de créer différentes listes basées sur des colonnes spécifiques (comme taskid)。实际上,根据我的理解,您需要拆分记录,而不是使用聚合函数将它们分组(例如 countsum etc.).
L'autre code que j'ai ajouté est juste pour plus de clarté.
Si cela résout votre problème ou si vous avez besoin d'autre chose, faites-le-moi savoir, merci !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre la somme et le compte dans Oracle La différence entre la somme et le compte dans Oracle May 02, 2024 pm 11:09 PM

SUM dans Oracle est utilisé pour calculer la somme des valeurs non nulles, tandis que COUNT compte le nombre de valeurs non nulles de tous les types de données, y compris les valeurs en double.

Comment écrire une fonction de regroupement dans MySQL Comment écrire une fonction de regroupement dans MySQL Apr 29, 2024 am 04:30 AM

La fonction de regroupement de MySQL est utilisée pour calculer des valeurs agrégées en regroupant un ensemble de données. Les fonctions couramment utilisées sont : SUM : Calcule la somme des valeurs dans la colonne spécifiée COUNT : Calcule le nombre de valeurs non NULL dans la colonne spécifiée AVG : Calcule la valeur moyenne des valeurs dans la colonne spécifiée MIN : Calculez la valeur minimale dans la colonne spécifiée. MAX : Calculez le nombre de valeurs non NULL dans la colonne spécifiée, la valeur maximale de

Que signifie groupe par dans SQL Que signifie groupe par dans SQL Apr 29, 2024 pm 02:48 PM

GROUP BY est une fonction d'agrégation dans SQL utilisée pour regrouper les données en fonction de colonnes spécifiées et effectuer des opérations d'agrégation. Il permet aux utilisateurs de : Regrouper les lignes de données en fonction de valeurs de colonne spécifiques. Appliquez une fonction d'agrégation (telle que somme, nombre, moyenne) à chaque groupe. Créez des résumés significatifs à partir de grands ensembles de données, effectuez l'agrégation et le regroupement de données.

Comment la somme en SQL est calculée Comment la somme en SQL est calculée May 09, 2024 am 09:27 AM

La fonction SQL SUM calcule la somme d'un ensemble de nombres en les additionnant. Le processus opérationnel comprend : 1. L'identification de la valeur d'entrée ; 2. La boucle de la valeur d'entrée et sa conversion en nombre ; 3. L'ajout de chaque nombre pour accumuler une somme ; 4. Le renvoi du résultat de la somme ;

Quelles sont les fonctions d'agrégation dans SQL Quelles sont les fonctions d'agrégation dans SQL May 02, 2024 am 01:12 AM

Les fonctions d'agrégation en SQL sont utilisées pour calculer et renvoyer une valeur unique pour un ensemble de lignes. Les fonctions d'agrégation courantes incluent : Fonctions d'agrégation numérique : COUNT(), SUM(), AVG(), MIN(), MAX() Fonctions d'agrégation d'ensembles de lignes : GROUP_CONCAT(), FIRST(), LAST() Fonctions d'agrégation statistique : STDDEV ( ), fonctions d'agrégation facultatives VARIANCE() : COUNT(DISTINCT), TOP(N)

Comment utiliser la fonction de comptage dans Oracle Comment utiliser la fonction de comptage dans Oracle Apr 30, 2024 am 07:39 AM

La fonction COUNT dans Oracle est utilisée pour compter les valeurs non nulles dans une colonne ou une expression spécifiée. La syntaxe est COUNT(DISTINCT <column_name>) ou COUNT(*), qui compte le nombre de valeurs uniques et toutes non. -valeurs nulles respectivement.

Comment utiliser la moyenne dans MySQL Comment utiliser la moyenne dans MySQL May 01, 2024 pm 09:16 PM

La fonction AVG() de MySQL est utilisée pour calculer la moyenne des valeurs numériques. Il prend en charge diverses utilisations, notamment : Calculer la quantité moyenne de tous les produits vendus : SELECT AVG(quantity_sold) FROM sales ; Calculer le prix moyen : AVG(price) ; Calculer le volume moyen des ventes : AVG(quantity_sold * price). La fonction AVG() ignore les valeurs NULL, utilisez IFNULL() pour calculer la moyenne des valeurs non nulles.

Comment utiliser la fonction somme dans SQL Comment utiliser la fonction somme dans SQL May 02, 2024 am 12:01 AM

La fonction SUM() en SQL est utilisée pour calculer la somme des colonnes numériques. Il peut calculer des sommes en fonction de colonnes spécifiées, de filtres, d'alias, de regroupement et d'agrégation de plusieurs colonnes, mais ne gère que les valeurs numériques et ignore les valeurs NULL.

See all articles