Lol, good luck with that.

On Thu, Jun 25, 2009 at 4:34 PM, Rob Wolfe <rob.wo...@oraclegeeks.com>wrote:

>
> ick (on the non-design design) and nifty.
>
> I am about to go live on a shiny new 11g data warehouse and we are
> determined to not make any of the same mistakes we made on the previous
> one. In other words, we are going to make new and more exciting ones...
>
>
> Rob
>
>  On Thu, June 25, 2009 19:27, Michael Moore wrote:
> > Well, I knew that you could do a simple if test on two collections like:
> > If COLL_A = COLL_B THEN ...
> >
> > and JOIN syntax is like " on thinga = thingb "
> >
> > and I knew how to use the COLLECT function.
> >
> > so you put it all together and voilĂ  !
> >
> > Strange thing is, due to our crappy database design by committee, I
> needed
> > to do exactly this.
> >
> > Mike
> >
> >
> >
> > On Thu, Jun 25, 2009 at 4:21 PM, Rob Wolfe
> > <rob.wo...@oraclegeeks.com>wrote:
> >
> >>
> >> Where did you every come up with the idea to do that? I like it, but it
> >> wouldn't have occured to me in a million years.
> >>
> >> Rob
> >>
> >>
> >>  On Thu, June 25, 2009 19:08, Michael Moore wrote:
> >> > I probably should have just done this in the first place, but here it
> >> is
> >> > ..
> >> > --------------------------------------------------------------------
> >> >
> >> > Performing a JOIN on groups of values using nested
> >> > tables<
> >>
> http://plsqlnotes.blogspot.com/2008/07/use-sum-function-but-save-detail-from.html
> >> >
> >> >
> >> > -- Join on a nested table example:
> >> >
> >> > -- this example takes 2 tables (c & d). On each table it does
> >> > -- a group by, and the details of that group are collected into a
> >> nested
> >> > table.
> >> > -- tables c & d are then joined on that nested table
> >> >
> >> > -- I probably would never do this, but I do think it is interesting.
> >> >
> >> > --DROP TABLE D CASCADE CONSTRAINTS;
> >> >
> >> > CREATE TABLE d (animal VARCHAR2(5 BYTE), grp NUMBER(6));
> >> >
> >> > SET DEFINE OFF;
> >> >
> >> > INSERT INTO d (animal, grp) VALUES ('cat', 4);
> >> > INSERT INTO d (animal, grp) VALUES ('cat', 7);
> >> > INSERT INTO d (animal, grp) VALUES ('toad', 7);
> >> > INSERT INTO d (animal, grp) VALUES ('frog', 4);
> >> > INSERT INTO d (animal, grp) VALUES ('frog', 7);
> >> > COMMIT ;
> >> >
> >> > -- DROP TABLE c CASCADE CONSTRAINTS;
> >> >
> >> > CREATE TABLE c( animal VARCHAR2(5 BYTE), grp NUMBER(6));
> >> >
> >> > SET DEFINE OFF;
> >> > INSERT INTO c (animal, grp) VALUES ('cat', 1);
> >> > INSERT INTO c (animal, grp) VALUES ('frog', 1);
> >> > INSERT INTO c (animal, grp) VALUES ('frog', 66);
> >> > INSERT INTO c (animal, grp) VALUES ('cat', 33);
> >> > INSERT INTO c (animal, grp) VALUES ('cat', 44);
> >> > INSERT INTO c (animal, grp) VALUES ('cat', 66);
> >> > INSERT INTO c (animal, grp) VALUES ('frog', 44);
> >> > INSERT INTO c (animal, grp) VALUES ('toad', 44);
> >> > COMMIT ;
> >> >
> >> > SELECT grp, animal FROM c ORDER BY grp, animal;
> >> > SELECT grp, animal FROM d ORDER BY grp, animal;
> >> >
> >> > CREATE OR REPLACE TYPE string20_table IS TABLE OF VARCHAR2(20);
> >> >
> >> > DECLARE
> >> > mystr VARCHAR2(80);
> >> > BEGIN
> >> > FOR cur1 IN
> >> > (SELECT *
> >> >     FROM
> >> >     (SELECT grp grp1, CAST(COLLECT(animal) AS string20_table) tab1
> >> >          FROM c GROUP BY grp)
> >> >     JOIN
> >> >     (SELECT grp grp2, CAST(COLLECT(animal) AS string20_table) tab2
> >> >         FROM d GROUP BY grp)
> >> >     ON tab1 = tab2  -- the magic happens here
> >> > )
> >> >   LOOP
> >> >     DBMS_OUTPUT.put_line( TO_CHAR(cur1.grp1)
> >> >         || '='
> >> >         || TO_CHAR(cur1.grp2));
> >> >   END LOOP;
> >> > END;
> >> > -- final output
> >> > -- 1=4
> >> > -- 44=7
> >> > -- 66=4
> >> >
> >> > >
> >> >
> >>
> >>
> >>
> >> >
> >>
> >
> > >
> >
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to