Dusan Kolesar wrote:
> 
> Hello Elke,
> Thank you very much. Your statement works excelent.
> One more question:
> Is it possible to make VIEW using RECURSIVE CURSOR ?

Unfortunately: NO

Elke
SAP Labs Berlin

> 
> Dusan
> 
> 
> On Wed, 02 Nov 2005 10:01:03 +0100, Zabach, Elke <[EMAIL PROTECTED]>
> wrote:
> 
> > Dusan Kolesar wrote:
> >>
> >> On Mon, 31 Oct 2005 15:14:15 +0100, Zabach, Elke
<[EMAIL PROTECTED]>
> >> wrote:
> >>
> >> > Dusan Kolesar wrote:
> >> >
> >> >>
> >> >> Hello list,
> >> >> Is it posible to do in SAP DB something like:
> >> >> SELECT CONCAT (column1 || ', ') FROM t1 GROUP BY column2
> >> >>
> >> >> Manual says:
> >> >> The GROUP clause allows the functions SUM, AVG, MAX/MIN, COUNT,
> > STDDEV,
> >> >> and VARIANCE
> >> >> to be applied not only to entire result tables but also to
groups
> > of
> >> >> rows
> >> >> within a result table.
> >> >>
> >> >> Or is there any other way how to obtain such a result?
> >> >> Thank you for your support.
> >> >>
> >> >
> >> > If a GROUP BY - clause is given, every column has to be part of
this
> >> > clause OR part of a aggregate function like SUM/MIN/MAX/COUNT/...
> >> >
> >> > --> your select is not possible. And, by the way, what should the
> >> > semantic be if all rows with the same column2-value are put
together
> > and
> >> > one of the column1-values is used to produce the output for the
> >> > corresponding resultrow? Which column1-value ????
> >> >
> >> > Which problem do you want to solve?
> >> >
> >> > Elke
> >> > SAP Labs Berlin
> >> >
> >> >
> >> >> Dusan
> >> >>
> >>
> >> Hello, Elke
> >> let me describe you my situation.
> >> I have tables:
> >> //
> >> CREATE TABLE "STATION"
> >> (
> >>    "ID"            Integer            NOT NULL  DEFAULT SERIAL,
> >>    "NAME"          Varchar(30)  ASCII NOT NULL  DEFAULT '',
> >>    PRIMARY KEY ("ID")
> >> )
> >> //
> >> CREATE TABLE LINE
> >> (
> >>    "ID"          Integer            NOT NULL DEFAULT SERIAL,
> >>    "NAME"        Varchar(10) ASCII  NOT NULL DEFAULT '',
> >>    PRIMARY KEY ("ID")
> >> )
> >> //
> >> CREATE TABLE STATION_LINE_REL
> >> (
> >>    "LINE_ID"      Integer  NOT NULL,
> >>    "STATION_ID"   Integer  NOT NULL,
> >>    "STATIONORDER" Integer  NOT NULL DEFAULT 1
> >>      CONSTRAINT "STATIONORDER" > 0,
> >>    FOREIGN KEY "LINE_ID" ("LINE_ID")
> >>      REFERENCES "LINE" ("ID") ON DELETE CASCADE,
> >>    FOREIGN KEY "STATION_ID" ("STATION_ID")
> >>      REFERENCES "STATION" ("ID") ON DELETE CASCADE
> >> )
> >> //
> >> INSERT STATION (ID, NAME) VALUES (1, 'ST1')
> >> //
> >> INSERT STATION (ID, NAME) VALUES (2, 'ST2')
> >> //
> >> INSERT STATION (ID, NAME) VALUES (3, 'ST3')
> >> //
> >> INSERT STATION (ID, NAME) VALUES (4, 'ST4')
> >> //
> >> INSERT LINE (ID, NAME) VALUES (1, 'L1')
> >> //
> >> INSERT LINE (ID, NAME) VALUES (2, 'L2')
> >> //
> >> INSERT STATION_LINE_REL (LINE_ID, STATION_ID, STATIONORDER) VALUES
(1,
> > 1,
> >> 1)
> >> //
> >> INSERT STATION_LINE_REL (LINE_ID, STATION_ID, STATIONORDER) VALUES
(1,
> > 2,
> >> 2)
> >> //
> >> INSERT STATION_LINE_REL (LINE_ID, STATION_ID, STATIONORDER) VALUES
(1,
> > 3,
> >> 3)
> >> //
> >> INSERT STATION_LINE_REL (LINE_ID, STATION_ID, STATIONORDER) VALUES
(2,
> > 2,
> >> 1)
> >> //
> >> INSERT STATION_LINE_REL (LINE_ID, STATION_ID, STATIONORDER) VALUES
(2,
> > 4,
> >> 2)
> >> //
> >>
> >> So between station and line is N:N relation.
> >> Line L1 : ST1, ST2, ST3
> >> Line L2 : ST2, ST4
> >>
> >> I need make a list of station for 1 station only 1 row
> >> with lines description column (LINES) = all lines on which station
> > lies.
> >> ID NAME    NUMLINES        LINES
> >> 1  ST1     1               L1
> >> 2  ST2     2               L1, L2
> >> 3  ST3     1               L1
> >> 4  ST4     1               L2
> >>
> >
> >
> > If you always can assure that not more than 2 lines will stop at the
> > same station, some kind of (outer) join may help.
> > I did not think of that case, but wanted to assure a correct result
for
> > as many lines per station as are in reality.
> > The resulting query looks a 'little bit' different:
> >
> > DECLARE C CURSOR FOR
> >   WITH RECURSIVE PX (ID, NUMLINES, LINES, LAST_LINE) AS
> >   (SELECT STATION_ID, 1, NAME, LINE.ID
> >     FROM STATION_LINE_REL, LINE
> >    WHERE STATION_LINE_REL.LINE_ID = LINE.ID
> >      AND (STATION_ID,LINE_ID) = ANY
> >          (SELECT STATION_ID, MIN(LINE_ID) FROM STATION_LINE_REL
> >           GROUP BY STATION_ID)
> >    UNION ALL
> >    SELECT PX.ID, NUMLINES+1, LINES||', '|| NAME,
> > STATION_LINE_REL.LINE_ID
> >      FROM STATION_LINE_REL, LINE, PX
> >    WHERE STATION_LINE_REL.LINE_ID = LINE.ID
> >      AND PX.ID        = STATION_LINE_REL.STATION_ID
> >      AND PX.LAST_LINE < STATION_LINE_REL.LINE_ID
> >   )
> > SELECT PX.ID, STATION.NAME, FIXED(NUMLINES, 2), LINES
> >  FROM PX, STATION
> > WHERE (PX.ID, NUMLINES) = ANY
> >             (SELECT STATION_ID, COUNT(*)
> >                FROM STATION_LINE_REL
> >               GROUP BY STATION_ID)
> >   AND PX.ID = STATION.ID
> > ORDER BY PX.ID
> >
> > But it works (tested with an additional line 3 stopping at station
2)
> >
> > Good luck
> >
> > Elke
> > SAP Labs Berlin
> >
> >
> >
> >
> >> SELECT STATION.ID, MIN (STATION.NAME)AS NAME,
> >>      COUNT (STATION_LINE_REL.LINE_ID) AS NUMLINES
> >> /*  CONCAT (LINE.NAME || ', ') AS LINES     */
> >>    FROM STATION
> >>      LEFT JOIN STATION_LINE_REL ON STATION_LINE_REL.STATION_ID =
> >> STATION.ID
> >>    GROUP BY STATION.ID
> >>
> >> And from other side lines list with station description colunm.
> >> Is it posible to find some elegant solution for this?
> >>
> >> Thank you, Dusan
> >>
> 
> --
> Dusan Kolesar
> Helsinska 19
> 040 13  Kosice
> Slovakia
> e-mail : [EMAIL PROTECTED]
> ICQ# : 160507424


--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to