Dans une suite à une question précédente, disons que j'ai 3 tables, A, B et C. Le tableau A a un ID qui est utilisé comme clé étrangère dans les tables B et C, dont chacun a une certaine valeur en tant qu'attribut. Pour chaque ID dans le tableau A, je veux obtenir la différence de valeur entre les tables B et C, qui peut être fait comme suit:Vues en MySQL basées sur plusieurs valeurs calculées
CREATE VIEW T1 AS
SELECT B.A_ID AS ID, SUM(B.VALUE) AS VAL
FROM B
GROUP BY B.A_ID;
CREATE VIEW T2 AS
SELECT C.A_ID AS ID, SUM(C.VALUE) AS VAL
FROM C
GROUP BY C.A_ID;
SELECT T1.ID, T1.VAL, T2.VAL FROM T1, T2 WHERE T1.ID = T2.ID;
Le problème est, si le tableau B a des valeurs pour un ID particulier , mais pas la table C, ou vice versa. Dans ce cas, mon instruction select ne retournera pas cette ligne. Est-il possible pour moi de créer une vue unique, qui ressemble essentiellement comme suit:
CREATE VIEW T3 AS
SELECT B.A_ID AS ID, SUM(B.VALUE) AS VAL1, SUB(C.VAL) AS VAL2
FROM B, C
WHERE B.A_ID = C.A_ID
GROUP BY B.A_ID;
Un exemple du script de création d'un tel point de vue serait apprécié.
Je suis vraiment intéressé par la solution qui a fini par fonctionner pour vous. –
Je vais probablement essayer, au moins, en utilisant celui que vous avez proposé. J'ai un problème avec mon fournisseur d'hébergement avec mon accès utilisateur aux bases de données en cours de résolution, donc je n'ai pas encore pu le tester, même si j'ai mes scripts préparés. Si votre solution fonctionne, j'accepterai votre réponse comme correcte. – Elie
Il s'avère que mon fournisseur d'hébergement ne supporte que MySQL 5.0, et les vues ont été introduites dans MySQL 5.0.1, donc cette option pour assembler les données automatiquement est sortie. – Elie