bubbledesavon
-
17 nov. 2014 à 09:50
bubbledesavon
Messages postés66Date d'inscriptionsamedi 21 février 2004StatutMembreDerniè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.
jordane45
Messages postés38145Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention25 avril 2024344 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)
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.
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
jordane45
Messages postés38145Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention25 avril 2024344 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;
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 20 nov. 2014 à 09:16