je me demandais comment modéliser ce problème en SQL :
le résultat d'un test est soit un numérique, soit un texte codé (c'est à
dire une chaine de caractère courte), sachant qu'on doit être capable de
sélectionner un ensemble de résultats pour afficher leurs valeurs,
quelque soit leur type.
je vois plusieurs options :
- dans la table resultat, j'ai un champ 'valeur' de type varchar qui
peut contenir aussi bien le texte codé que la valeur numérique, avec un
champ booléen indiquant le type de résultat qui décider du transtypage
éventuel.
- dans la table resultat, un champ valeur_num et un champ valeur_char,
l'un des deux étant null pour indiquer que l'autre est significatif
- 3 tables, resultat_numeriques et resultat_texte avec une clef
étrangère vers la table parente (implémentation simple d'héritage). le
problème est alors de devoir requeter les 2 tables à chaque fois qu'on
veut la valeur d'un résultat...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD - SQLpro
Si la valeur est toujoiurs numérisable, alors un simple :
CAST(ColValue AS FLOAT) est suffisant
soit utiliser un CASE, soit utiliser un UNION
A +
mutah a écrit:
Bonjour,
je me demandais comment modéliser ce problème en SQL :
le résultat d'un test est soit un numérique, soit un texte codé (c'est à dire une chaine de caractère courte), sachant qu'on doit être capable de sélectionner un ensemble de résultats pour afficher leurs valeurs, quelque soit leur type.
je vois plusieurs options :
- dans la table resultat, j'ai un champ 'valeur' de type varchar qui peut contenir aussi bien le texte codé que la valeur numérique, avec un champ booléen indiquant le type de résultat qui décider du transtypage éventuel.
- dans la table resultat, un champ valeur_num et un champ valeur_char, l'un des deux étant null pour indiquer que l'autre est significatif
- 3 tables, resultat_numeriques et resultat_texte avec une clef étrangère vers la table parente (implémentation simple d'héritage). le problème est alors de devoir requeter les 2 tables à chaque fois qu'on veut la valeur d'un résultat...
merci d'avance de vos conseils éclairés :)
François
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Si la valeur est toujoiurs numérisable, alors un simple :
CAST(ColValue AS FLOAT) est suffisant
soit utiliser un CASE, soit utiliser un UNION
A +
mutah a écrit:
Bonjour,
je me demandais comment modéliser ce problème en SQL :
le résultat d'un test est soit un numérique, soit un texte codé (c'est à
dire une chaine de caractère courte), sachant qu'on doit être capable de
sélectionner un ensemble de résultats pour afficher leurs valeurs,
quelque soit leur type.
je vois plusieurs options :
- dans la table resultat, j'ai un champ 'valeur' de type varchar qui
peut contenir aussi bien le texte codé que la valeur numérique, avec un
champ booléen indiquant le type de résultat qui décider du transtypage
éventuel.
- dans la table resultat, un champ valeur_num et un champ valeur_char,
l'un des deux étant null pour indiquer que l'autre est significatif
- 3 tables, resultat_numeriques et resultat_texte avec une clef
étrangère vers la table parente (implémentation simple d'héritage). le
problème est alors de devoir requeter les 2 tables à chaque fois qu'on
veut la valeur d'un résultat...
merci d'avance de vos conseils éclairés :)
François
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Si la valeur est toujoiurs numérisable, alors un simple :
CAST(ColValue AS FLOAT) est suffisant
soit utiliser un CASE, soit utiliser un UNION
A +
mutah a écrit:
Bonjour,
je me demandais comment modéliser ce problème en SQL :
le résultat d'un test est soit un numérique, soit un texte codé (c'est à dire une chaine de caractère courte), sachant qu'on doit être capable de sélectionner un ensemble de résultats pour afficher leurs valeurs, quelque soit leur type.
je vois plusieurs options :
- dans la table resultat, j'ai un champ 'valeur' de type varchar qui peut contenir aussi bien le texte codé que la valeur numérique, avec un champ booléen indiquant le type de résultat qui décider du transtypage éventuel.
- dans la table resultat, un champ valeur_num et un champ valeur_char, l'un des deux étant null pour indiquer que l'autre est significatif
- 3 tables, resultat_numeriques et resultat_texte avec une clef étrangère vers la table parente (implémentation simple d'héritage). le problème est alors de devoir requeter les 2 tables à chaque fois qu'on veut la valeur d'un résultat...
merci d'avance de vos conseils éclairés :)
François
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************