From 73385a8c86b0552fe45bc86d105a0d5bf2b4df30 Mon Sep 17 00:00:00 2001 From: erichard <elliot.richard@lal.in2p3.fr> Date: Thu, 31 Oct 2019 11:34:05 +0100 Subject: [PATCH] =?UTF-8?q?Modification=20de=20la=20requ=C3=AAte=20sql=20d?= =?UTF-8?q?e=20s=C3=A9lection=20des=20=C3=A9l=C3=A9ments=20!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour obtenir des nom d'attribut identique pour les identifiants entre les json des elements et labels j'ai modifier le nom des attributs de la requête (id_element -> id). Ainsi {id: , element_name: } et {id: , label_name: } peuvent utiliser la fonction get_ids(object) qui retourne une chaîne d'id séparer par des virgule (étape préparatoire des requêtes sql). --- app/getter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/getter.py b/app/getter.py index c43c298..9bb97a9 100644 --- a/app/getter.py +++ b/app/getter.py @@ -10,9 +10,9 @@ def get_elements(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_la :return: list """ if(id_mandatory_labels): - elements = send_sql('SELECT id_element, element_name FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id=ELEMENT_LABEL.id_element INNER JOIN LABEL ON ELEMENT_LABEL.id_label=LABEL.id WHERE id_label IN (' + id_mandatory_labels + ") AND id_element NOT IN (SELECT id_element FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id=ELEMENT_LABEL.id_element INNER JOIN LABEL ON ELEMENT_LABEL.id_label=LABEL.id WHERE id_label IN (" + id_forbiden_labels + ")) GROUP BY id_element HAVING COUNT(*) = " + number_of_mandatory_labels + " Order BY element_name") + elements = send_sql('SELECT ELEMENT.id, element_name FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id=ELEMENT_LABEL.id_element INNER JOIN LABEL ON ELEMENT_LABEL.id_label=LABEL.id WHERE id_label IN (' + id_mandatory_labels + ") AND id_element NOT IN (SELECT id_element FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id=ELEMENT_LABEL.id_element INNER JOIN LABEL ON ELEMENT_LABEL.id_label=LABEL.id WHERE id_label IN (" + id_forbiden_labels + ")) GROUP BY id_element HAVING COUNT(*) = " + number_of_mandatory_labels + " Order BY element_name") else: - elements = send_sql('SELECT DISTINCT id_element, element_name FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id = ELEMENT_LABEL.id_element INNER JOIN label ON ELEMENT_LABEL.id_label=label.id WHERE element_name NOT IN ( SELECT element_name FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id = ELEMENT_LABEL.id_element INNER JOIN label ON ELEMENT_LABEL.id_label = label.id WHERE id_label IN (' + id_forbiden_labels + ') ) ORDER BY element_name ASC') + elements = send_sql('SELECT DISTINCT ELEMENT.id, element_name FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id = ELEMENT_LABEL.id_element INNER JOIN label ON ELEMENT_LABEL.id_label=label.id WHERE element_name NOT IN ( SELECT element_name FROM ELEMENT INNER JOIN ELEMENT_LABEL ON ELEMENT.id = ELEMENT_LABEL.id_element INNER JOIN label ON ELEMENT_LABEL.id_label = label.id WHERE id_label IN (' + id_forbiden_labels + ') ) ORDER BY element_name ASC') return elements #get_labels(json.loads(get_elements(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_labels))) -- GitLab