Обсуждение: Restricting a VIEW.
Hello all, I have a doubt. In the next example, I have a table with two columns: - DATE - MONEY And a VIEW which SUM's the money GROUPing by 'month/year' (I cut off the day)... Ok.. I would like to be able to SELECT * FROM VIEW.. but restricting by complete dates (dd/mm/yyyy)... (Last select in theexample) I think it isn't possible, but I would like to know your opinion... Or if there is any workaround... Best regards.. --============================== DROP TABLE ty_test; CREATE TABLE ty_test (datein date NOT NULL, money numeric(6,2) NOT NULL, PRIMARY KEY (datein) ) WITHOUT OIDS; INSERT INTO ty_test VALUES ('2002/10/01',10); INSERT INTO ty_test VALUES ('2002/10/15',20); INSERT INTO ty_test VALUES ('2002/11/15',30); DROP VIEW vw_ty_test; CREATE VIEW vw_ty_test AS SELECT TO_CHAR(datein,'MM/YYYY') AS datein2, SUM(money) FROM ty_test GROUP BY datein2; SELECT * FROM ty_test; -- All rows from table. SELECT * FROM vw_ty_test; -- All rows from view. SELECT * FROM vw_ty_test WHERE datein BETWEEN '2002/10/01' AND '2002/10/9'; --==============================
--- Terry Yapt <yapt@technovell.com> wrote: > Hello all, > > I have a doubt. In the next example, I have a table > with two columns: > - DATE > - MONEY > > And a VIEW which SUM's the money GROUPing by > 'month/year' (I cut off the day)... > > Ok.. I would like to be able to SELECT * FROM VIEW.. > but restricting by complete dates (dd/mm/yyyy)... > (Last select in the example) > > I think it isn't possible, but I would like to know > your opinion... Or if there is any workaround... > > Best regards.. > > --============================== > DROP TABLE ty_test; > CREATE TABLE ty_test > (datein date NOT NULL, > money numeric(6,2) NOT NULL, > PRIMARY KEY (datein) > ) WITHOUT OIDS; > > INSERT INTO ty_test VALUES ('2002/10/01',10); > INSERT INTO ty_test VALUES ('2002/10/15',20); > INSERT INTO ty_test VALUES ('2002/11/15',30); > > DROP VIEW vw_ty_test; > CREATE VIEW vw_ty_test AS > SELECT > TO_CHAR(datein,'MM/YYYY') AS datein2, > SUM(money) > FROM > ty_test > GROUP BY > datein2; > > SELECT * FROM ty_test; -- All rows from table. > SELECT * FROM vw_ty_test; -- All rows from view. > I don't the work around using a view but you can do it without using a view: SELECT to_number(to_char(datein,'mm'),'99') as month, to_number(to_char(datein,'yyyy'),'9999')as year, SUM(money) FROM ty_test WHERE datein BETWEEN to_date('01/10/2002','mm/dd/yyyy')AND to_date('09/10/2002','mm/ddy/yyyy') ORDER BY to_number(to_char(datein,'mm'),'99') to_number(to_char(datein,'yyyy'),'9999'); ludwig. __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com
Hi Ludwig, I need that like a VIEW because if I convert that view to a select, I must to do that SELECT in a lot of client programs. I would to know if I can to do any kind of VIEW with parameters... Rewriting the view in the example: DROP VIEW vw_ty_test; CREATE VIEW vw_ty_test AS SELECT TO_CHAR(datein,'MM/YYYY') AS datein2, SUM(money) FROM ty_test WHERE datein BETWEEN $Parameter1 AND $Parameter2 GROUP BY datein2; is it possible ?? How ? Thanks a lot... On Mon, 21 Oct 2002 02:51:10 +0000 (UTC), lud_nowhere_man@yahoo.com (Ludwig Lim) wrote: > >--- Terry Yapt <yapt@technovell.com> wrote: >> Hello all, >> >> I have a doubt. In the next example, I have a table >> with two columns: >> - DATE >> - MONEY >> >> And a VIEW which SUM's the money GROUPing by >> 'month/year' (I cut off the day)... >> >> Ok.. I would like to be able to SELECT * FROM VIEW.. >> but restricting by complete dates (dd/mm/yyyy)... >> (Last select in the example) >> >> I think it isn't possible, but I would like to know >> your opinion... Or if there is any workaround... >> >> Best regards.. >> >> --============================== >> DROP TABLE ty_test; >> CREATE TABLE ty_test >> (datein date NOT NULL, >> money numeric(6,2) NOT NULL, >> PRIMARY KEY (datein) >> ) WITHOUT OIDS; >> >> INSERT INTO ty_test VALUES ('2002/10/01',10); >> INSERT INTO ty_test VALUES ('2002/10/15',20); >> INSERT INTO ty_test VALUES ('2002/11/15',30); >> >> DROP VIEW vw_ty_test; >> CREATE VIEW vw_ty_test AS >> SELECT >> TO_CHAR(datein,'MM/YYYY') AS datein2, >> SUM(money) >> FROM >> ty_test >> GROUP BY >> datein2; >> >> SELECT * FROM ty_test; -- All rows from table. >> SELECT * FROM vw_ty_test; -- All rows from view. >> > I don't the work around using a view but you can do >it without using a view: > > SELECT > to_number(to_char(datein,'mm'),'99') as month, > to_number(to_char(datein,'yyyy'),'9999') as year, > SUM(money) > FROM ty_test > WHERE datein BETWEEN > to_date('01/10/2002','mm/dd/yyyy') AND > to_date('09/10/2002','mm/ddy/yyyy') > ORDER BY > to_number(to_char(datein,'mm'),'99') > to_number(to_char(datein,'yyyy'),'9999'); > > >ludwig. > >__________________________________________________ >Do you Yahoo!? >New DSL Internet Access from SBC & Yahoo! >http://sbc.yahoo.com > >---------------------------(end of broadcast)--------------------------- >TIP 3: if posting/reading through Usenet, please send an appropriate >subscribe-nomail command to majordomo@postgresql.org so that your >message can get through to the mailing list cleanly
Hi Ludwig, I need that like a VIEW because if I convert that view to a select, I must to do that SELECT in a lot of client programs. I would to know if I can to do any kind of VIEW with parameters... Rewriting the view in the example: DROP VIEW vw_ty_test; CREATE VIEW vw_ty_test AS SELECT TO_CHAR(datein,'MM/YYYY') AS datein2, SUM(money) FROM ty_test WHERE datein BETWEEN $Parameter1 AND $Parameter2 GROUP BY datein2; is it possible ?? How ? Thanks a lot... On Mon, 21 Oct 2002 02:51:10 +0000 (UTC), lud_nowhere_man@yahoo.com (Ludwig Lim) wrote: > >--- Terry Yapt <yapt@technovell.com> wrote: >> Hello all, >> >> I have a doubt. In the next example, I have a table >> with two columns: >> - DATE >> - MONEY >> >> And a VIEW which SUM's the money GROUPing by >> 'month/year' (I cut off the day)... >> >> Ok.. I would like to be able to SELECT * FROM VIEW.. >> but restricting by complete dates (dd/mm/yyyy)... >> (Last select in the example) >> >> I think it isn't possible, but I would like to know >> your opinion... Or if there is any workaround... >> >> Best regards.. >> >> --============================== >> DROP TABLE ty_test; >> CREATE TABLE ty_test >> (datein date NOT NULL, >> money numeric(6,2) NOT NULL, >> PRIMARY KEY (datein) >> ) WITHOUT OIDS; >> >> INSERT INTO ty_test VALUES ('2002/10/01',10); >> INSERT INTO ty_test VALUES ('2002/10/15',20); >> INSERT INTO ty_test VALUES ('2002/11/15',30); >> >> DROP VIEW vw_ty_test; >> CREATE VIEW vw_ty_test AS >> SELECT >> TO_CHAR(datein,'MM/YYYY') AS datein2, >> SUM(money) >> FROM >> ty_test >> GROUP BY >> datein2; >> >> SELECT * FROM ty_test; -- All rows from table. >> SELECT * FROM vw_ty_test; -- All rows from view. >> > I don't the work around using a view but you can do >it without using a view: > > SELECT > to_number(to_char(datein,'mm'),'99') as month, > to_number(to_char(datein,'yyyy'),'9999') as year, > SUM(money) > FROM ty_test > WHERE datein BETWEEN > to_date('01/10/2002','mm/dd/yyyy') AND > to_date('09/10/2002','mm/ddy/yyyy') > ORDER BY > to_number(to_char(datein,'mm'),'99') > to_number(to_char(datein,'yyyy'),'9999'); > > >ludwig. > >__________________________________________________ >Do you Yahoo!? >New DSL Internet Access from SBC & Yahoo! >http://sbc.yahoo.com > >---------------------------(end of broadcast)--------------------------- >TIP 3: if posting/reading through Usenet, please send an appropriate >subscribe-nomail command to majordomo@postgresql.org so that your >message can get through to the mailing list cleanly