Bonjour,
J'ai une requête sur laquelle je me casse la tête depuis plusieurs heures, et je pense avoir besoin de vous ^^.
Ma base de donnée est composé de 5 tables :
vous trouverez la base de donnée en pièce jointe.
Je souhaite creer la requete avec les résultats suivant :
colonne n°1 : tool_name
colonne n°2 : indic_name
colonne n°3 : data_time
colonne n°4 : data_value
Je veux que pour chaque tool_name, j'ai tous les indic_name même si il n'y a pas de data_value. ( mettre NULL si absence de résultats )
Chaque tool_name à une date différente, je veux récupérer la derniere date pour chaque tool_name.
Enfaite comment ça marche :
Sur chaque tool_name, je viens passer 2 recipes.
La recipe me permet de récupérer des valeurs sur des indic_names.
Je veux afficher un grand tableau de ce type avec les derniers résultats pour chaque tool_name :
Alors j'ai essayé de créer la requête et avec celle-ci il me manque 6 lignes...
avec la recette FINGERPRINT2.rcp et critical = yes, j'ai 4 indic_name pour chaque tool_name. Il y a 26 tool_name, je devrai avoir 26x4 = 104 lignes de résultats. Hors je n'en ai que 98.... :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT DISTINCT t.tool_key, t.tool_name, d.data_time, i.indic_name, d.data_value FROM (SELECT ti.tool_key, ti.tool_name, MAX(di.data_time) AS data_time FROM tool AS ti LEFT JOIN data as di USING (tool_key) RIGHT join indicator AS ii USING (indic_key) WHERE recipe = "FINGERPRINT2.rcp" AND critical = "yes" AND (data_time = di.data_time OR data_time IS NULL) GROUP BY tool_name) t LEFT JOIN data AS d USING (tool_key) RIGHT JOIN indicator AS i USING (indic_key) WHERE (d.data_time = t.data_time OR d.data_time IS NULL) AND recipe = "FINGERPRINT2.rcp" AND critical = "yes" ORDER BY indic_name, tool_name
Merci de votre aide.
Partager