RE: Problems to execute(SELECT MAX).

From: Gentry, Michael (michael_gentr..anniemae.com)
Date: Fri Jul 30 2004 - 13:34:52 EDT

  • Next message: Eric Schneider: "Re: Problems to execute(SELECT MAX)."

    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 - 13:34:59 EDT