feat: add sql functions
This commit is contained in:
parent
b2aa8ca22e
commit
6f5c66fcbd
@ -6,7 +6,8 @@ all: build
|
|||||||
build: \
|
build: \
|
||||||
$(DIR_BUILD)/00_drop.sql \
|
$(DIR_BUILD)/00_drop.sql \
|
||||||
$(DIR_BUILD)/01_create.sql \
|
$(DIR_BUILD)/01_create.sql \
|
||||||
$(DIR_BUILD)/02_insert.sql
|
$(DIR_BUILD)/02_insert.sql \
|
||||||
|
$(DIR_BUILD)/05_functions.sql
|
||||||
# $(DIR_BUILD)/03_select.sql \
|
# $(DIR_BUILD)/03_select.sql \
|
||||||
# $(DIR_BUILD)/04_update.sql
|
# $(DIR_BUILD)/04_update.sql
|
||||||
|
|
||||||
@ -34,6 +35,10 @@ $(DIR_BUILD)/04_update.sql: $(DIR_SRC)/update.sql
|
|||||||
mkdir -p $(dir $@)
|
mkdir -p $(dir $@)
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
|
$(DIR_BUILD)/05_functions.sql: $(DIR_SRC)/functions.sql
|
||||||
|
mkdir -p $(dir $@)
|
||||||
|
cp $< $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(DIR_BUILD)/* .data/*.data
|
rm -f $(DIR_BUILD)/* .data/*.data
|
||||||
|
|
||||||
|
33
PostgreSQL/src/functions.sql
Normal file
33
PostgreSQL/src/functions.sql
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
DROP FUNCTION pieces_membre(integer);
|
||||||
|
CREATE OR REPLACE FUNCTION pieces_membre(int) RETURNS TABLE(id_piece int, quantite_piece int)
|
||||||
|
AS
|
||||||
|
$$
|
||||||
|
SELECT id_piece, quantite_contenir * quantite_enregistrer as quantite_pieces_possedees
|
||||||
|
FROM enregistrer
|
||||||
|
NATURAL JOIN boites
|
||||||
|
NATURAL JOIN contenir
|
||||||
|
WHERE id_membre=$1
|
||||||
|
UNION
|
||||||
|
(SELECT id_piece, quantite_acheter as quantite_pieces_possedees
|
||||||
|
FROM acheter WHERE id_membre=$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) AS
|
||||||
|
$$
|
||||||
|
SELECT id_modele
|
||||||
|
FROM modeles
|
||||||
|
WHERE id_modele not IN
|
||||||
|
(
|
||||||
|
SELECT id_modele FROM (SELECT * FROM pieces_membre($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;
|
Loading…
x
Reference in New Issue
Block a user