Hi,
Please, I need help to correct some sql queries...
Let me define my db :
CLIENT (NUM_CLT, NAME, ADR)
ITEM (NUM_IT, NAME, PRICE)
COMMAND(NUM_CLT, NUM_IT, QT)
I meet two problems : one concerns subqueries or
operator instruction "except" and the other, the view.
I don't understand why the two queries below
are not correct with Postgresql though it be correct with Oracle
(I want to know the clients which have not
made more than 2 commands) :
-------
QUERY 1
-------
select clt.num_clt
from client clt
where clt.num_clt not in (select cd.num_clt from commande cd group by cd.num_clt having count(*) > 2);
The PostgreSQL Error is : rewrite: aggregate column view must be at rigth side in qual
I test the subquery and it is ok.
-------
QUERY 2
-------
select clt.num_clt
from client clt
except select cd.num_clt from command cd group by cd.num_clt having count(*) > 2;
The PostgreSQL Error is : parser: parse error at or next except
If I use "(" and ")" for the subquery, the PostgreSQL Error
is : parser: parse error at or next select.
I try to check "except" with simple query and I don't succeed it.
-------
QUERY 3
-------
I want to create a view and I want to name the column.
I don't find the exact syntax for this.
create view payment( NAME_C, TT ) as select client.name NAME_C, sum(qt*prix) TT from client, item, command where
client.num_clt=command.num_cltand item.num_item=command.num_item group by client.name, client.num_clt
An other question : why the num_clt is selected also ?
If I don't name the column, the query is correct and Postgres
chooses the names sum in place of TT.
(select * from payment returns the correct result) :
create view payment as select client.name, sum(qt*prix) from client, item, command where
client.num_clt=command.num_cltand item.num_item=command.num_item group by client.name, client.num_clt
But when I want to know the client which must pay more than 1000 :
select * from payment
where sum>1000
The PostgreSQL Error is : rewrite: aggregate column view must be at rigth side in qual
In advance, thank you for your help.
mb