Créer des vues pour des Requêtes Sql

Résolu/Fermé
jihen_badreddine Messages postés 14 Date d'inscription vendredi 24 juin 2016 Statut Membre Dernière intervention 10 février 2018 - 14 août 2017 à 08:41
jihen_badreddine Messages postés 14 Date d'inscription vendredi 24 juin 2016 Statut Membre Dernière intervention 10 février 2018 - 14 août 2017 à 23:54
Bonjour;

Cette requête contient une projection et un filtrage et aprés la création de vue et lors de l’exécution du requête j'ai cette erreur :

ERROR 1054 (42S22): Unknown column 'l_quantity' in 'field list'

V1 : Q1_Project_lineitem



Create view Q1_Project_lineitem As select  l_returnflag ,l_linestatus, sum(l_quantity) as sum_qty,sum(l_extendedprice) as sum_base_price,sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,sum(l_extendedprice * (1 - l_discount) * (1 +l_tax)) as sum_charge,avg(l_quantity) as avg_qty,avg(l_extendedprice) as avg_price,avg(l_discount) as avg_disc,count(*) as count_order from lineitem   group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus;




select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price,  sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,
avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order from Q1_Project_lineitem group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus;



V2 :Q1_Filter_lineitem

 Create view Q1_Filter_lineitem As select * from lineitem where  l_shipdate <= date '1998-12-01' - interval '1' day ;


select * from Q1_Filter_lineitem  where l_shipdate <= date '1998-12-01' - interval '1' day ;


Merci de me répondre a ma question
A voir également:

1 réponse

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 14 août 2017 à 09:55
Bonjour,

Si tu définis une vue, c'est justement pour ne pas avoir besoin de rappeler les fonctions et clauses qui permettent son obtention.

Dans ta v1, tu as défini Q1_Project_lineitem avec les colonnes l_returnflag, l_linestatus, sum_qty, sum_base_price, sum_disc_price, sum_charge, avg_qty, avg_price, avg_disc et count_order

Tous les autres noms de colonnes, ceux issus de la table d'origine, sont inconnus dans la vue. De plus, la clause GROUP BY est déjà incluse, pas besoin de la rajouter.

Ta requête doit être, tout simplement :
SELECT l_returnflag, l_linestatus, sum_qty, sum_base_price, sum_disc_price, sum_charge, avg_qty, avg_price, avg_disc, count_order
FROM Q1_Filter_lineitem


Dans ta v2, même remarque : le WHERE est déjà donné dans la vue, pas la peine de le rajouter :
select * from Q1_Filter_lineitem
aura le même effet.

Xavier
0
jihen_badreddine Messages postés 14 Date d'inscription vendredi 24 juin 2016 Statut Membre Dernière intervention 10 février 2018
14 août 2017 à 23:54
Merci
0