Requêtes Sql
Résolu
jihen_badreddine
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
jihen_badreddine Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
jihen_badreddine Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour ;
j'ai des requêtes et je veut créer les vues concernant ces requêtes, une parmi ceux :
et leurs vues :
lors de l’exécution des vues contenant les jointures j'ai cette erreur : ERROR 1353 (HY000): View's SELECT and view's field list have different column counts
merci de m'aider
j'ai des requêtes et je veut créer les vues concernant ces requêtes, une parmi ceux :
select s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_address, s_phone, s_comment
from part, supplier, partsupp, nation, region where p_partkey = ps_partkey and s_suppkey = ps_suppkey and p_size = 1 and p_type like '%NICKEL' and s_nationkey = n_nationkey and n_regionkey = r_regionkey and r_name = 'AMERICA' and ps_supplycost = ( select min(ps_supplycost) from partsupp, supplier, nation, region where p_partkey = ps_partkey and s_suppkey = ps_suppkey and s_nationkey = n_nationkey and n_regionkey = r_regionkey and r_name = 'AMERICA' ) order by s_acctbal desc, n_name, s_name, p_partkey;
et leurs vues :
V1 :Q2_Project1
Create view Q2_Project1 As select s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_address, s_phone, s_comment from part, supplier, partsupp, nation, region order by s_acctbal desc, n_name, s_name, p_partkey;
SELECT s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_address, s_phone, s_comment FROM Q2_Project1 ;
V2 :Q2_Join(P_PS)
Create view Q2_Join(P_PS) As select p_partkey , ps_partkey from part, partsupp where p_partkey = ps_partkey ;
select * from Q2_Join(P_PS) ;
V3 :Q2_Join(S;PS)
Create view Q2_Join(S_PS) As select * from supplier, partsupp where s_suppkey = ps_suppkey ;
select * from Q2_Join(S_PS) ;
V4 :Q2_Filter1
Create view Q2_Filter1 As select * from part where p_size = 1 ;
select * from Q2_Filter1 ;
V5 :Q2_Filter2
Create view Q2_Filter2 As select * from part where p_type like '%NICKEL' ;
select * from Q2_Filter2 ;
V6 :Q2_Join(S_N)
Create view Q2_Join(S_N) As select * from supplier, nation where s_nationkey = n_nationkey ;
select * from Q2_Join(S_N) ;
V7 :Q2_Join(N_R)
Create view Q2_Join(N_R) As select * from supplier, nation where n_regionkey = r_regionkey;
select * from Q2_Join(N_R) ;
V8 :Q2_Filter3
Create view Q2_Filter3 As select * from region where r_name = 'AMERICA' ;
select * from Q2_Filter3 ;
V9 :Q2_Project2
Create view Q2_Project2 As select min(ps_supplycost) from partsupp, supplier, nation, region ;
SELECT min(ps_supplycost) FROM Q2_Project2;
V10 : Q2_Filter4
Create view Q2_Filter4 As select * from partsupp where ps_supplycost = Q2_Project2 ;
select * from Q2_Filter4 ;
lors de l’exécution des vues contenant les jointures j'ai cette erreur : ERROR 1353 (HY000): View's SELECT and view's field list have different column counts
merci de m'aider
A voir également:
- Requêtes Sql
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
1 réponse
Bonjour,
Quand tu appelles tes vues « Q2_Join(P_PS) », ce qui est entre parenthèses, tu voudrais que ça fasse partie du nom de la vue ?
Parce que pour SQL, dans la définition de la vue, c'est comme si tu disais « je veux créer une vue qui s'appelle Q2_Join ayant une seule colonne nommée P_PS »
Du coup, quand tu écris :
SQL te répond : « Tu me dis de créer une vue Q2_Join avec une colonne nommée P_PS, mais après tu me donnes deux colonnes. »
D'où ton message d'erreur.
D'ailleurs au passage, pour lui toutes tes vues Q2_Join ont donc le même nom.
Je te suggère plutôt d'appeler tes vues Q2_Join_P_PS, etc.
Xavier
(PS : Au passage, dans ta vue P_PS, les deux colonnes auront toujours la même valeur, tu peux n'en garder qu'une seule, et du coup cette vue n'a pas beaucoup d'intérêt...)
Quand tu appelles tes vues « Q2_Join(P_PS) », ce qui est entre parenthèses, tu voudrais que ça fasse partie du nom de la vue ?
Parce que pour SQL, dans la définition de la vue, c'est comme si tu disais « je veux créer une vue qui s'appelle Q2_Join ayant une seule colonne nommée P_PS »
Du coup, quand tu écris :
Create view Q2_Join(P_PS) As select p_partkey , ps_partkey from part, partsupp where p_partkey = ps_partkey ;
SQL te répond : « Tu me dis de créer une vue Q2_Join avec une colonne nommée P_PS, mais après tu me donnes deux colonnes. »
D'où ton message d'erreur.
D'ailleurs au passage, pour lui toutes tes vues Q2_Join ont donc le même nom.
Je te suggère plutôt d'appeler tes vues Q2_Join_P_PS, etc.
Xavier
(PS : Au passage, dans ta vue P_PS, les deux colonnes auront toujours la même valeur, tu peux n'en garder qu'une seule, et du coup cette vue n'a pas beaucoup d'intérêt...)
Oui je désigne par Q2_Join(P_PS) le nom de ma vue.
Merci bien.