Vue imbiquée
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai des requetes avec des vues imbriquées, j'aimerais faire en sorte que ces requetes n'utilisent plus ces vues, comment faire?
La requête en question:
v_produit
v_cata
J'ai des requetes avec des vues imbriquées, j'aimerais faire en sorte que ces requetes n'utilisent plus ces vues, comment faire?
La requête en question:
--Description : Offre SELECT p."MARCHE",p."PX_ID",p."DESCRIPTION",p."STATUS",p."PROD_BRAND",p."CATEGORIE",p."INSTALLED_PROD",p."DEBUT_COMMERCIAL",p."EXT_ID",p."AVANTAGE_BOOST",p."TYPE_SO",p."ALLOW_MODIFY",p."BILLABLE_FLAG",p."SALEABLE_FLG",p."FC_SUPPR_FLAG",p."FC_RETRAIT_FLAG",p."SIM_ONLY",p."FC_ELIGIBILITE",p."PRIX",p."ALCEA_ID",lnk.product_group,c.libelle /*AS catalogue*/,c.fc_cata_type FROM v_produit p INNER JOIN PS_PROD_PGRP_LNK lnk ON lnk.product_id=p.px_id LEFT OUTER JOIN v_cata c ON c.product_group=lnk.product_group AND c.prod_grp_type=lnk.prod_grp_type AND c.prod_grp_type='CMDE' AND p.categorie IN ('OFFRE','OFFRE TYPE')
v_produit
--Description : liste des produits SELECT so.setid /*AS marche*/,so.product_id /*AS px_id*/,descr /*AS description*/,so.eff_status /*AS status*/, so.prod_brand,so.prod_category /*AS categorie*/,installed_prod,date_begin /*AS debut_commercial*/,kl_prd_ext_id /*AS ext_id*/,so.FC_AVANTAGE /*AS avantage_boost*/ ,tso.description /*AS type_so*/, auth.allow_modify,auth.billable_flag,auth.saleable_flg,fc_suppr_flag,fc_retrait_flag, CASE auth.fc_simonly_flag WHEN 'Y' THEN 'Y' ELSE 'N' END /*AS sim_only*/, FC_ELIGIBILITE,p.rt_total_price /*AS prix*/, so.fc_alcea_id /*AS alcea_id*/ FROM ps_prod_item so LEFT OUTER JOIN ps_fc_type_so tso ON tso.fc_type_so=so.fc_type_so LEFT OUTER JOIN ps_fc_otso_com_tbl auth ON auth.product_id=so.product_id and so.setid=auth.setid LEFT OUTER JOIN PS_FC_PREST_POST p ON p.FC_PPOST_ID=so.fc_ppost_id
v_cata
--Description : catalogue d'offres SELECT product_group,prod_grp_type,descr /*as libelle*/,fc_cata_type,fc_calc_fmig FROM ps_prod_group_tbl WHERE prod_grp_type IN ('CMDE','CMPT') ORDER BY descr
A voir également:
- Vue imbiquée
- Vue satellite en direct gratuit de ma maison - Guide
- Vue de profil instagram - Guide
- Vue de profil facebook - Guide
- Comment retrouver une publication vue sur facebook - Guide
- Vue password - Télécharger - Confidentialité
5 réponses
Bonjour,
Pour ne plus utiliser ces vues, il faudrait créer des tables qui correspondraient à un instant t au contenu de ces vues :
Cependant on perd le caractère dynamique des vues, pour le remplacer on peut utiliser un job qui truncate MaNouvelleTable et qui la re-alimente via la même requête...
J'espère avoir pu t'aider,
A+
Pour ne plus utiliser ces vues, il faudrait créer des tables qui correspondraient à un instant t au contenu de ces vues :
SELECT * INTO MaNouvelleTable FROM v_produit(Pareil pour les autres vues)
Cependant on perd le caractère dynamique des vues, pour le remplacer on peut utiliser un job qui truncate MaNouvelleTable et qui la re-alimente via la même requête...
J'espère avoir pu t'aider,
A+
Le problème c'est que les vues seront supprimées.
N'y aurait-il pas un moyen plus simple de gérer ca?
Merci d'avance
N'y aurait-il pas un moyen plus simple de gérer ca?
Merci d'avance
Pour ne plus les utiliser du tout, il faudrait créer alors un job qui supprime/recréé MaNouvelleTable via la requête source de la vue pour garder ce côté dynamique. Si les données n'ont pas besoin d'être mises à jour continuellement, juste créer une table avec le contenu de la vue suffit (ce qui doit être le cas si les vues doivent être supprimées).
Je n'ai jamais utilisé les jobs, pourrais tu me donner un exemple.
En essayant de trouve une autre solution, je me demande s'il n'y a pas moyen d'inclure la requete de la vue dans ma requete principale, exemple:
En essayant de trouve une autre solution, je me demande s'il n'y a pas moyen d'inclure la requete de la vue dans ma requete principale, exemple:
SELECT p."MARCHE",p."PX_ID",p."DESCRIPTION",p."STATUS",p."PROD_BRAND",p."CATEGORIE",p."INSTALLED_PROD",p."DEBUT_COMMERCIAL",p."EXT_ID",p."AVANTAGE_BOOST",p."TYPE_SO",p."ALLOW_MODIFY",p."BILLABLE_FLAG",p."SALEABLE_FLG",p."FC_SUPPR_FLAG",p."FC_RETRAIT_FLAG",p."SIM_ONLY",p."FC_ELIGIBILITE",p."PRIX",p."ALCEA_ID",lnk.product_group,c.libelle /*AS catalogue*/,c.fc_cata_type FROM ( SELECT so.setid /*AS marche*/,so.product_id /*AS px_id*/,descr /*AS description*/,so.eff_status /*AS status*/, so.prod_brand,so.prod_category /*AS categorie*/,installed_prod,date_begin /*AS debut_commercial*/,kl_prd_ext_id /*AS ext_id*/,so.FC_AVANTAGE /*AS avantage_boost*/ ,tso.description /*AS type_so*/, auth.allow_modify,auth.billable_flag,auth.saleable_flg,fc_suppr_flag,fc_retrait_flag, CASE auth.fc_simonly_flag WHEN 'Y' THEN 'Y' ELSE 'N' END /*AS sim_only*/, FC_ELIGIBILITE,p.rt_total_price /*AS prix*/, so.fc_alcea_id /*AS alcea_id*/ FROM ps_prod_item so LEFT OUTER JOIN ps_fc_type_so tso ON tso.fc_type_so=so.fc_type_so LEFT OUTER JOIN ps_fc_otso_com_tbl auth ON auth.product_id=so.product_id and so.setid=auth.setid LEFT OUTER JOIN PS_FC_PREST_POST p ON p.FC_PPOST_ID=so.fc_ppost_id ) AS p INNER JOIN PS_PROD_PGRP_LNK lnk ON lnk.product_id=p.px_id LEFT OUTER JOIN v_cata c ON c.product_group=lnk.product_group AND c.prod_grp_type=lnk.prod_grp_type AND c.prod_grp_type='CMDE' AND p.categorie IN ('OFFRE','OFFRE TYPE')
Tu peux aussi faire comme ça, c'est un choix en fonction de ton besoin :
Soit tu prévois de requêter souvent ces résultats, et il vaut mieux l'avoir actualisé une fois par jour (par exemple) dans une table fixe
Ou alors tu ne prévois pas de requêter la dessus souvent, et il vaut mieux inclure la requête dans la clause FROM et supporter la charge d'une "double requête" quelque fois par semaine (par exemple encore une fois).
Pour la première solution, créer un job permet de planifier une requête de façon à ce qu'elle s'exécute périodiquement.
Voici un tuto pour créer un job.
Ah mais j'oubliais, les jobs c'est pour SQL Server, ton post est classé en "Bases de données"... Quelle est ta plateforme ?
Soit tu prévois de requêter souvent ces résultats, et il vaut mieux l'avoir actualisé une fois par jour (par exemple) dans une table fixe
Ou alors tu ne prévois pas de requêter la dessus souvent, et il vaut mieux inclure la requête dans la clause FROM et supporter la charge d'une "double requête" quelque fois par semaine (par exemple encore une fois).
Pour la première solution, créer un job permet de planifier une requête de façon à ce qu'elle s'exécute périodiquement.
Voici un tuto pour créer un job.
Ah mais j'oubliais, les jobs c'est pour SQL Server, ton post est classé en "Bases de données"... Quelle est ta plateforme ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je suis sur du Oracle, je vais dans un premier temps m'orienter sur la seconde solution (inclure la vue dans ma requête), dans l'exemple que j'ai donné dans mon message précédent, j'ai une erreur d'exécution, pourquoi?
Merci d'avance.
Merci d'avance.
L'erreur d'exécution, ça peut venir de plein de choses ^^
Voir ceci
Ceci également
Et pourquoi pas ça aussi
Voir ceci
Ceci également
Et pourquoi pas ça aussi