> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bonx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lire des données

> Filtrer, trier, paginer et lire des données liées.

Les requêtes de liste acceptent quatre arguments principaux :

* `where` filtre les résultats ;
* `orderBy` définit leur ordre ;
* `limit` définit le nombre maximal de résultats ;
* `offset` ignore les premiers résultats.

Vous pouvez utiliser plusieurs arguments dans la même requête.

## Filtrer les résultats

Ajoutez `where` et indiquez un opérateur pour chaque champ à filtrer.

```graphql theme={null}
query {
  receivings(where: { name: { _eq: "REC-0412" } }) {
    id
    name
  }
}
```

Les opérateurs courants sont :

| Opérateur | Fonction |
| - | - |
| `_eq`, `_neq` | Est égal à, est différent de |
| `_in`, `_nin` | Est dans une liste, n'est pas dans une liste |
| `_gt`, `_gte`, `_lt`, `_lte` | Compare des nombres ou des dates |
| `_like`, `_ilike` | Recherche un texte avec `%` comme caractère générique |
| `_isNull` | Vérifie si un champ est vide |

`_ilike` ignore les différences entre les majuscules et les minuscules. Combinez
plusieurs conditions avec `_and`, `_or` ou `_not`.

```graphql theme={null}
query {
  receivings(where: { _and: [{ createdAt: { _gte: "2026-08-01" } }, { site: { name: { _eq: "Atelier Nord" } } }] }) {
    id
    name
  }
}
```

Le filtre `site: { name: … }` utilise une donnée liée. Il sélectionne les
réceptions à partir du nom de leur site.

## Trier et paginer

Cette requête renvoie les 50 réceptions les plus récentes :

```graphql theme={null}
query {
  receivings(orderBy: { createdAt: DESC }, limit: 50, offset: 0) {
    id
    name
    createdAt
  }
}
```

Pour lire la page suivante, ajoutez la valeur de `limit` à `offset`. Gardez le
même `orderBy` pour toutes les pages. Sinon, des lignes peuvent être répétées ou
absentes.

## Lire des données liées

Sélectionnez une relation comme un autre champ. La requête suivante renvoie une
réception, son fournisseur, ses lignes et l'article de chaque ligne.

```graphql theme={null}
query {
  receivings(where: { name: { _eq: "REC-0412" } }) {
    id
    name
    supplier: supplierOrganization {
      id
      name
    }
    lines {
      id
      quantity
      article {
        id
        articleCode
        name
      }
    }
  }
}
```

`supplier` est un alias. Il remplace le nom `supplierOrganization` dans la
réponse. Une relation imbriquée peut aussi recevoir son propre argument `where`.

## Compter les résultats

Utilisez une opération qui se termine par `Aggregate` pour calculer une valeur
sur plusieurs fiches.

```graphql theme={null}
query {
  receivingsAggregate(where: { createdAt: { _gte: "2026-08-01" } }) {
    aggregate {
      count
    }
  }
}
```

Selon le type du champ, vous pouvez aussi utiliser `sum`, `avg`, `min` ou `max`.
Le serveur calcule alors le résultat sans renvoyer toutes les lignes.

<Tip>Les tables et les champs additionnels de votre espace utilisent les mêmes filtres et les mêmes relations.</Tip>
