FAQ access 2007

FAQ access 2007Consultez toutes les FAQ
Nombre d'auteurs : 1, nombre de questions : 75, dernière mise à jour : 15 juin 2021
Sommaire→Champs multi-valués→SQL- Comment compter le nombre de valeurs distinctes d'un champ multi-valué sur l'ensemble la table en SQL ?
- Comment compter le nombre de valeur d'un champ multi-valué en SQL?
- Comment filtrer les enregistrements en fonction des valeurs d'un champ multi-valué ?
- Comment lister les valeurs distinctes d'un champs multi-valué sur l'ensemble de la table en SQL ?
- Comment savoir si un champ multi-valué est vide en SQL ?
- Comment supprimer toutes les valeurs d'un champs multi-valué ?
- Comment supprimer une valeur d'un champs multi-valué ?
- Est il possible de créer un nouvel enregistrement avec un champ multi-valué en SQL ?
- Est il possible d'insérer une valeur dans un champs multi valué en SQL ?
Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
La requête permet de compter le nombreux de permis différents attribués
SELECT Count(PermisDistinct) AS NombreDePermis
FROM
(SELECT DISTINCT(PermisChauffeur.Value) AS PermisDistinct
FROM tbl_chauffeur)Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
La requête suivante liste les chauffeurs ainsi que le nombre de permis qu'ils possèdent
SELECT NomChauffeur, PrenomChauffeur, (SELECT Count(PermisChauffeur.Value)
FROM tbl_chauffeur WHERE NumChauffeur=T.NumChauffeur)
FROM tbl_chauffeur AS T;Lien : Comment savoir si un champ multi-valué est vide en SQL ?
Lien : Comment compter le nombre de valeurs distinctes d'un champ multi-valué sur l'ensemble la table en SQL ?
Lien : Comment compter le nombre de valeurs d'un champ multi-valué en VBA ?
Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
La requête suivante permet de lister les chauffeurs possédant le permis D
SELECT NomChauffeur,PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value="D"Cette deuxième requête retourne les chauffeurs possédant à la fois le permis D et le permis E
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value="D" AND PermisChauffeur.Value="E";Enfin cette troisième permet de lister les chauffeurs titulaires des permis D ou E ou bien les deux
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value="D" OR PermisChauffeur.Value="E";Pour cette dernière requête il aurait été possible d'utiliser un critère avec IN
Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
La requête permet de lister les permis attribués
SELECT DISTINCT(PermisChauffeur.Value)
FROM tbl_chauffeurLien : Comment savoir si un champ multi-valué est vide en SQL ?
Lien : Comment compter le nombre de valeur d'un champ multi-valué en SQL?
Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
Il existe 3 méthodes pour lister les Chauffeurs ne possédant aucun permis :
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value IS NULL;Ou
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE IsNull(PermisChauffeur.Value);Ou encore
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur AS T
WHERE (SELECT Count(PermisChauffeur.Value) FROM tbl_chauffeur WHERE NumChauffeur=T.NumChauffeur)=0;Lien : Comment compter le nombre de valeurs distinctes d'un champ multi-valué sur l'ensemble la table en SQL ?
Lien : Comment compter le nombre de valeur d'un champ multi-valué en SQL?
Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
Cette exemple va supprimer l'ensemble des permis du chauffeur n°2
DELETE PermisChauffeur.Value
FROM tbl_chauffeur
WHERE numChauffeur=2Lien : Comment supprimer une valeur d'un champs multi-valué ?
Lien : Comment supprimer toutes les valeurs d'un champs multi-valué en VBA ?
Lien : Comment supprimer une valeur d'un champs multi-valué en VBA ?
Soit la table suivante :
- NumChauffeur : NuméroAuto
- NomChauffeur : Texte(20)
- PrenomChauffeur : Texte(20)
- PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées
Cette exemple va supprimer le permis D du chauffeur n°1
DELETE PermisChauffeur.Value
FROM tbl_chauffeur
WHERE numChauffeur=1 AND PermisChauffeur.Value="D"Lien : Comment supprimer toutes les valeurs d'un champs multi-valué ?
Lien : Comment supprimer une valeur d'un champs multi-valué en VBA ?
Lien : Comment supprimer toutes les valeurs d'un champs multi-valué en VBA ?
Non, il n'est pas possible de créer une requête INSERT INTO avec dans la liste des champs un champ de type multi-valué.
Par exemple, cette requête n'est pas valide
INSERT INTO tbl_chauffeur (NomChauffeur,PrenomChauffeur,PermisChauffeur)
VALUES ("HEUR","Marc",(SELECT PermisChauffeur FROM Chauffeur WHERE numChauffeur=2))Elle aurait pourtant servi à dupliquer les permis du chauffeur n°2
La seule solution est de créer l'enregistrement sans le champ multi-valué.
Lien : Comment créer un champ à valeurs multiples de type "Table/requête" ?
Lien : Comment créer un champ à valeurs multiples de type "Table/requête" ?
Tout comme il est impossible de créer un enregistrement en fixant le champ multi-valué, il est impossible d'ajouter une valeur à ce champ. En effet les requêtes INSERT INTO refusent cette fonctionnalité.
Solution : passer par VBA
Lien : Comment ajouter une valeur d'un champs multi-valué en VBA ?



