From 08dcfa2e881ce42474f093315e868027b8e7bad8 Mon Sep 17 00:00:00 2001 From: Martin Eyben Date: Tue, 3 Dec 2024 12:11:44 +0000 Subject: [PATCH] feat(sql): add function to list models based on a box --- PostgreSQL/src/functions.sql | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/PostgreSQL/src/functions.sql b/PostgreSQL/src/functions.sql index 2fa93ea..aa09a51 100644 --- a/PostgreSQL/src/functions.sql +++ b/PostgreSQL/src/functions.sql @@ -14,6 +14,17 @@ $$ LANGUAGE SQL; ; + +CREATE OR REPLACE FUNCTION pieces_boite(int) RETURNS TABLE(id_piece int, quantite_piece int) +AS +$$ +(SELECT id_piece, quantite_contenir + FROM contenir WHERE id_boite=$1); +$$ +LANGUAGE SQL; +; + + -- Liste des modèles faisables à partir d'un membre CREATE OR REPLACE FUNCTION modeles_faisables_membre(int) RETURNS TABLE( id_modele int @@ -31,3 +42,22 @@ WHERE id_modele not IN ) $$ LANGUAGE SQL; + + +-- Liste des modèles faisables à partir d'une boite +CREATE OR REPLACE FUNCTION modeles_faisables_boite(int) RETURNS TABLE( + id_modele int +) AS +$$ +SELECT id_modele +FROM modeles +WHERE id_modele not IN +( + SELECT id_modele FROM (SELECT * FROM pieces_boite($1)) as pieces_possedees + RIGHT OUTER JOIN (SELECT id_piece as id_necessaire, quantite_necessiter, id_modele + FROM necessiter) as pieces_modeles + ON pieces_possedees.id_piece = id_necessaire + WHERE quantite_necessiter > quantite_piece OR quantite_piece IS NULL +) +$$ +LANGUAGE SQL;