diff --git a/app/getter.py b/app/getter.py
index 3693e14d7de428db889eb6cff80361c25a755669..f6ffb03aa67d3b55cd42a311a1989283b31bf89a 100644
--- a/app/getter.py
+++ b/app/getter.py
@@ -1,5 +1,6 @@
 import json
 from app.sql_request import send_sql
+from typing import Dict, List
 
 def get_elements(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_labels):
     """
@@ -10,29 +11,143 @@ def get_elements(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_la
     :return: list
     """
     if(id_mandatory_labels):
-        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(*) = " + str(number_of_mandatory_labels) + " Order BY element_name")
+        print("avec")
+        request = '''
+                    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 ({}) 
+                        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 ({})) 
+                                            GROUP BY id_element 
+                                            HAVING COUNT(*) = {} 
+                                            Order BY element_name
+        '''.format(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_labels)
+
+        elements = send_request_to_db(request)
     else:
-        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')
+        print("sans")
+        request = '''
+                    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 ({}) ) 
+                                        ORDER BY element_name ASC
+        '''.format(id_forbiden_labels)
+
+        elements = send_request_to_db(request)
     return elements
 
 #get_labels(json.loads(get_elements(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_labels)))
-def get_labels(elements):
+def get_labels(elements: List[Dict[int, str]]):
     """
     Return a set of new labels to continue your selection with it
-    :param elements: list
-    :return: list
+    :param elements: list[Dict[str,str]]
+    :return: list[Dict[str,str]]
     """
-    id_selected_elements = get_ids(elements)
+    id_selected_elements: str = get_ids(elements)
+    print(id_selected_elements)
+    print(type(id_selected_elements))
     number_of_selected_elements = len(elements)
-    discriminating_labels = send_sql('SELECT LABEL.id, label_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_element IN (' + id_selected_elements + ') GROUP BY id_label HAVING COUNT(*) < ' + number_of_selected_elements)
+    print(number_of_selected_elements)
+    print(type(number_of_selected_elements))
+    request = '''
+                SELECT 
+                    LABEL.id
+                    , label_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_element IN ({}) 
+                GROUP BY id_label 
+                HAVING COUNT(*) < {}
+    '''.format(id_selected_elements,number_of_selected_elements)
+
+    discriminating_labels = send_request_to_db(request)
     id_discriminating_labels = get_ids(discriminating_labels)
-    labels = send_sql('SELECT * FROM (SELECT label_name, id FROM LABEL WHERE LABEL.id IN(' + id_discriminating_labels + ')) WHERE id NOT IN (SELECT B.id AS id_fils FROM (SELECT * FROM LABEL WHERE id IN (' + id_discriminating_labels + ')) AS A, LABEL AS B WHERE A.id=B.father_id)')
+    request = '''
+                SELECT 
+                    * 
+                FROM (
+                        SELECT 
+                            label_name
+                            , id 
+                        FROM 
+                            LABEL 
+                        WHERE 
+                            LABEL.id IN({})
+                    ) 
+                WHERE 
+                    id NOT IN   (
+                                SELECT 
+                                    B.id AS id_fils 
+                                FROM    (
+                                        SELECT 
+                                            * 
+                                        FROM 
+                                            LABEL 
+                                        WHERE 
+                                            id IN ({})
+                                        ) AS A, 
+                                    LABEL AS B 
+                                WHERE 
+                                    A.id=B.father_id
+                                )
+    '''.format(id_discriminating_labels, id_discriminating_labels)
+    labels = send_request_to_db(request)
     return labels
 
 def get_ids(objects):
     """
     Return all ids of the object's set
-    :param objects: list
+    :param objects: list[Dict[str,str]]
     :param attribut: str
     :return: str
     """
@@ -42,5 +157,16 @@ def get_ids(objects):
     while i<len(objects)-1:
         objects_ids +=  str(objects[i]["id"]) + ","
         i +=1
-    objects_ids += str(objects[i]["id"])
-    return objects_ids
\ No newline at end of file
+    if(len(objects)!=0):
+        objects_ids += str(objects[i]["id"])
+    return objects_ids
+
+def send_request_to_db(request):
+    import sqlite3
+    l = []
+    with sqlite3.connect('app/labelsTower.db') as connexion:
+         cursor = connexion.cursor()
+         response = cursor.execute(request)
+         for row in response:
+             l.append({"id": row[0], "name": row[1]})
+    return l