Échantillonner les données d'une table en SQL
Dfordanger
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
blux Messages postés 27135 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27135 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Contexte : Chaque champ de la table (tbl_produit) contient une caractéristique d'un produit listé dans la table.
La question à laquelle je souhaiterais répondre est "Quel est l'ensemble minimal de produits à sélectionner de manière à faire apparaître chaque caractéristique une fois au moins ?"
En gros, un ensemble d'entrées représentatif de chaque caractéristique disponible dans tbl_liste_caractéristique...
Je me demandais si cela était possible en SQL, ou s'il fallait utiliser un autre langage ?
Merci d'avance pour votre réponse !
D
Contexte : Chaque champ de la table (tbl_produit) contient une caractéristique d'un produit listé dans la table.
La question à laquelle je souhaiterais répondre est "Quel est l'ensemble minimal de produits à sélectionner de manière à faire apparaître chaque caractéristique une fois au moins ?"
En gros, un ensemble d'entrées représentatif de chaque caractéristique disponible dans tbl_liste_caractéristique...
Je me demandais si cela était possible en SQL, ou s'il fallait utiliser un autre langage ?
Merci d'avance pour votre réponse !
D
A voir également:
- Échantillonner les données d'une table en SQL
- Fuite données maif - Guide
- Table ascii - Guide
- Table des matières word - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
2 réponses
Salut,
ton problème relève de la théorie des probabilités, bien plus que de l'algèbre relationnelle, à la base des base de données.
En fonction du nombre de produit différents et de la quantité de ces produits, tu auras une réponse différente.
Je m'explique :
dans ton tiroir, tu as 18 chaussettes, 9 noires et 9 bleues.
Si tu veux être sûr d'avoir au moins une paire identique et que tu es dans le noir, il faut prendre 10 chaussettes, même dans le cas le plus défavorable, tu en auras forcément au moins une qui sera complète.
Si tu as 3 couleurs de chaussettes, il te faut additionner le nombre total de chaussettes de 2 couleurs et ajouter 1. Pour 4 couleurs, additionner le total de 3 couleurs et ajouter 1.
Ca, c'est la théorie, dans la pratique SQL, ça sera plus dur :
- compter le nombre de caractéristiques uniques (SELECT UNIQUE ou DISTINCT...)
- compter le nombre d'articles par caractéristiques (SELECT COUNT... GROUP BY...)
- additionner les (n-1) résultats renvoyés précédemment : pas facile du tout, voire impossible en SQL
- lire un nombre d'enregistrement égal au résultat précédent +1 (SELECT TOP n en fonction du SQL utilisé).
Maintenant, selon le SGBD que tu utilises, ça peut se traiter en programmation.
ton problème relève de la théorie des probabilités, bien plus que de l'algèbre relationnelle, à la base des base de données.
En fonction du nombre de produit différents et de la quantité de ces produits, tu auras une réponse différente.
Je m'explique :
dans ton tiroir, tu as 18 chaussettes, 9 noires et 9 bleues.
Si tu veux être sûr d'avoir au moins une paire identique et que tu es dans le noir, il faut prendre 10 chaussettes, même dans le cas le plus défavorable, tu en auras forcément au moins une qui sera complète.
Si tu as 3 couleurs de chaussettes, il te faut additionner le nombre total de chaussettes de 2 couleurs et ajouter 1. Pour 4 couleurs, additionner le total de 3 couleurs et ajouter 1.
Ca, c'est la théorie, dans la pratique SQL, ça sera plus dur :
- compter le nombre de caractéristiques uniques (SELECT UNIQUE ou DISTINCT...)
- compter le nombre d'articles par caractéristiques (SELECT COUNT... GROUP BY...)
- additionner les (n-1) résultats renvoyés précédemment : pas facile du tout, voire impossible en SQL
- lire un nombre d'enregistrement égal au résultat précédent +1 (SELECT TOP n en fonction du SQL utilisé).
Maintenant, selon le SGBD que tu utilises, ça peut se traiter en programmation.
Bonjour Dfordanger, - 28 sept. 2011 à 11:50
Cette syntaxe de regroupement devrait vous dépanner.
- Chaque libellé distinct contenu dans "Champ_1" est listé une unique fois.
- Le Count est facultatif. Il permet de dénombrer le nombre d'occurrence pour chaque libellé.
SELECT <Table_1.Champ_1>, Count(<Table_1.Champ_1>) AS CompteDeChamp_1
FROM <Table_1>
GROUP BY <Table_1.Champ_1>
ORDER BY <Table_1.Champ_1>;
Cordialement
Cette syntaxe de regroupement devrait vous dépanner.
- Chaque libellé distinct contenu dans "Champ_1" est listé une unique fois.
- Le Count est facultatif. Il permet de dénombrer le nombre d'occurrence pour chaque libellé.
SELECT <Table_1.Champ_1>, Count(<Table_1.Champ_1>) AS CompteDeChamp_1
FROM <Table_1>
GROUP BY <Table_1.Champ_1>
ORDER BY <Table_1.Champ_1>;
Cordialement