Selection de champs non vides

bubbledesavon - 17 nov. 2014 à 09:50
bubbledesavon Messages postés 66 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 6 mars 2015 - 25 nov. 2014 à 17:45
Bonjour,
voila mon souci,
j'ai une table A, qui contient 23 colonnes DATE,A1,A2,A3....
c'est une base de donnee qui vient d'un automate,donc des qu'une valeur change sur l'automate ,l'automate envoie l'ecriture de la valeur.
ex:id=1 date=17/11/2014 09:45:13 A1=vide A2=vide A3=4 A5=vide.....A22=vide
id=2 date=17/11/2014 09:45:23 A1=0.23 A2=vide A3=vide ....A22=vide.
id=3 ....

ensuite avec cette base je cree un graphique avec un "SELECT * FROM A WHERE date entre xx et xxx"
suite a cette requete je cree un JSON
cela fonctionne, sauf que mon graphique ressemble a une scie
ex: bonne valeur - zero - zero - bonne valeur -zero....

j'aimerais savoir si il y a une solution pour choisir uniquement la valeur non vide de chaque ligne par rapport a la date?

je ne sait pas si j'ai ete clair , mais je reste a votre dispo pour plus d'infos.

cordialement

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
17 nov. 2014 à 09:58
Bonjour,

Je pense que ce traitement doit être fait dans ton code et non dans ta requête.
C'est à dire : Tu fais ta requête... tu reçois toutes les données... tu les retravailles AVANT de faire ton graph en excluant les colonnes vides.

Mais ... à quoi correspondent tes différentes colonnes A1 ..A2 ..A3 ...

J'ai l'impression que ta BDD est mal conçue.... et que tes A1 A2.. sont en fait le même champ mais que tu te décalles dans tes colonnes pour garder un historique...Et dans ce cas..N'aurais tu pas mieux fais de faire :
Une table ELEMENT ( id_elm,date_elm)
Une table ITEMS (id_item, id_elm,_val_item)



0
bubbledesavon
17 nov. 2014 à 10:14
c'est un automate qui envie A1=tension de la batterie,A2=tension capteur ,A3=puissance pince,A4=temperature tapis.....

et il envoie une trame a peu pres comme ceux ci :
""-""-""-4-""-""-""-""-""-""-""
""-""-""-""-""-""-""-25.3-""-""-""
........
moi je rajout la date avant de l'nevoyer dans la table.

effectivement je vais essayer avec deux tables et je vous tiens au courant.

cordialement
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 17/11/2014 à 10:38
Avec une seule table c'est jouable...
Mais de la forme :

Une table MESURE(id_mesure, libelle,valeur,date_mesure)
libelle* correspondant au "nom du champ" ( ce qui équivaut à tes A1..A2..A3..)

Et donc par la suite, ta requête pourrait ressembler à quelque chose du genre :

SELECT * FROM A 
WHERE date entre xx et xxx
AND valeur <>''


Ce qui te retournera un tableau de la forme:

1 A1 4 2014-11-17 09:45:00
2 A2 25,43 2014-11-17 09:45:23
...


A toi ensuite de "travailler" ton tableau pour créer ton graphique
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
Modifié par simonpelloquin le 19/11/2014 à 16:25
Salut,

Tu peux utiliser ce type de requête (fonctionne sous Firebird, à adapter éventuellement en fonction de ton SGBD). C'est un exemple en prenant une table avec 5 colonnes (DATE_EVENT, A1, A2, A3, A4).
L'inconvénient, c'est que tu ne sais pas quel "A" est renvoyé...

Select distinct DATE_EVENT,
(CASE
WHEN A1 is NULL then
CASE
When A2 is NULL then
CASE
When A3 is NULL then A4 /* et sinon on continue avec A5, A6... */
ELSE A3
END
ELSE A2
END
ELSE A1
END) AS A_Result
FROM A


Simon
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
19 nov. 2014 à 18:48
Le souci c'est qu'il a : 23 colonnes ....
Ce qui implique de coder autant de WHEN ...
Sans parler du fait que si un jour il veut ajouter une colonne il devra ajouter encore un case when...
Bref.. le souci... au départ.. se trouve dans la conception de sa BDD;
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
20 nov. 2014 à 09:16
Certes... :)
0
bubbledesavon Messages postés 66 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 6 mars 2015
Modifié par bubbledesavon le 25/11/2014 à 17:46
bonjour,

effectivement , j'ai retravaillé la base de donnee

date-evenement-valeur

j'ai un peu galeré avec le graphique , mais maintenant tout fonctionne.

merci de votre interet et de vos reponses.
0
Rejoignez-nous