Re: Problems to execute(SELECT MAX).

From: Eric Schneider (eri..entralparksoftware.com)
Date: Fri Jul 30 2004 - 14:09:36 EDT

  • Next message: Elia Morling: "Duplicate CayenneDataObject"

    True, just supplying a select list and class would easier.

    new SQLTemplate(MyTable.class, "select max(myColumn)", true);

    It's hard to say why it was done this way. Maybe Andrus can offer a
    better explanation when he's online. Or you can look at the source if
    you are really interested.

    e.

    On Jul 30, 2004, at 1:34 PM, Gentry, Michael wrote:

    > Even if you setFetchingDataRows(true), you are still essentially
    > specifying the table name twice. For example:
    >
    > template = new SQLTemplate(MyTable.class, "select max(myColumn) from
    > MyTable", true);
    >
    > Instead of just:
    >
    > template = new SQLTemplate(MyTable.class, "select max(myColumn)",
    > true);
    >
    > It seems to me that MyTable.class is already specifying the table, but
    > you have to specify it in the query, anyway. (I tried it in a little
    > testbed I have and it blows up if you leave the table name out of the
    > string.) I can understand the need to use MyTable.class (you need to
    > know which DB connection to use/etc, especially if accessing multiple
    > DBs simultaneously, etc), but I don't see why we'd need to specify the
    > table, since that information already exists.
    >
    > /dev/mrg
    >
    >
    > -----Original Message-----
    > From: Eric Schneider [mailto:eri..entralparksoftware.com]
    > Sent: Friday, July 30, 2004 12:05 PM
    > To: Cayenne mailing list post
    > Subject: Re: Problems to execute(SELECT MAX).
    >
    >
    > /dev/mrg,
    >
    > I'm think it's in the case when you're not setting
    > setFetchingDataRows(true) which is the default behavior.
    >
    > It's much easier to construct DataObjects of a certain type with a
    > Class instead of paring your SQL string to derive it.
    >
    > cheers,
    > e.
    >
    > On Jul 30, 2004, at 11:55 AM, Gentry, Michael wrote:
    >
    >> Maybe it's just me (too bad Andrus is on vacation right now), but if
    >> you
    >> are passing in the entity to the SQLTemplate constructor, why do you
    >> also need to include a "from" clause? Seems to me it should be able
    > to
    >> figure that out and could do it better than us developers (especially
    >> where the database is case sensitive, such as Sybase or the table name
    >> is different/confusing compared to the entity name). After all, that
    >> information has already been modeled.
    >>
    >> Am I missing something there or does anyone else find that strange?
    >>
    >> Thanks,
    >>
    >> /dev/mrg
    >>
    >>
    >> -----Original Message-----
    >> From: Tore Halset [mailto:halse..vv.ntnu.no]
    >> Sent: Friday, July 30, 2004 11:08 AM
    >> To: Cayenne mailing list post
    >> Subject: Re: Problems to execute(SELECT MAX).
    >>
    >>
    >> Hello
    >>
    >> String q = "select max(field) as max from table";
    >> SQLTemplate query = new SQLTemplate(Table.class, q,
    >> true);
    >> query.setFetchingDataRows(true);
    >> List result = dc.performQuery(query);
    >> Map row = (Map)result.get(0);
    >> log.info("max: " + row.get("max"));
    >>
    >> Take a look at aggregate-functions in cayenne examples as well:
    >> http://objectstyle.org/cayenne/examples/aggregate-functions/index.html
    >>
    >> Regards,
    >> - Tore.
    >>
    >>
    >> On Jul 30, 2004, at 15:52, Reinaldo Coelho Sartorelli wrote:
    >>
    >>> Regards, you have a example?
    >>>
    >>> I can't execute SELECT MAX with the SqlTemplate option and neither
    >> with
    >>> Expression as was suggested in the other email.
    >>>
    >>> Tks,
    >>> Reinaldo.
    >>>
    >>> On Friday 30 July 2004 03:08, Tore Halset wrote:
    >>>> On Jul 30, 2004, at 3:22, Reinaldo Coelho Sartorelli wrote:
    >>>>> All, who i can execute SELECT MAX from column, if "SqlSelectQuery"
    >> is
    >>>>> deprecated, and don't have MAX option ???
    >>>>
    >>>> Take a look at SQLTemplate. It has replaced SqlSelectQuery and has
    >>>> some
    >>>> nice features.
    >>>> http://www.objectstyle.org/cayenne/userguide/fetch/sqltemplate.html
    >>>>
    >>>> Does cayenne support using a attribute based on a function like min,
    >>>> max, sum, count and avg in the model? The attribute needs to be read
    >>>> only and should not be included when the table are created. I think
    >>>> this is supported by EOF. The argument to the function could be a
    >>>> path.
    >>>> E.g: The Company ObjEntity could have a attribute named maxSallery
    >>>> defined as max(employe.sallery).
    >>>>
    >>>> Regards,
    >>>> - Tore.
    >>
    >



    This archive was generated by hypermail 2.0.0 : Fri Jul 30 2004 - 14:10:54 EDT