I always use stored procedure when I meet such demand.

On Jan 3, 2008 11:09 PM, Baron Schwartz <[EMAIL PROTECTED]> wrote:

> Hi,
>
> On Jan 3, 2008 9:28 AM, GF <[EMAIL PROTECTED]> wrote:
> > I need to create a view, about a ranking.
> > The select from which I generate the view has a "ORDER BY" and I need
> > to have a column in that select that shows the position of the object
> > in that ranking.
> >
> > I have searched on google, and I have found that it's possibile to do
> > it using the SET command and using variables.. but I don't think in a
> > VIEW I can use variables and SET.
>
> Correct.  You can use ordinary SQL, like this:
>
> create table fruits (
>    type varchar(10) not null,
>    variety varchar(20) not null,
>    primary key(type, variety));
>
> insert into fruits values
> ('apple', 'gala'),
> ('apple', 'fuji'),
> ('apple', 'limbertwig'),
> ('orange', 'valencia'),
> ('orange', 'navel'),
> ('pear', 'bradford'),
> ('pear', 'bartlett'),
> ('cherry', 'bing'),
> ('cherry', 'chelan');
>
> select l.type, l.variety, count(*) as num
> from fruits as l
> left outer join fruits as r
>    on l.type = r.type
>    and l.variety >= r.variety
> group by l.type, l.variety;
>
> +--------+------------+-----+
> | type   | variety    | num |
> +--------+------------+-----+
> | apple  | fuji       |   1 |
> | apple  | gala       |   2 |
> | apple  | limbertwig |   3 |
> | cherry | bing       |   1 |
> | cherry | chelan     |   2 |
> | orange | navel      |   1 |
> | orange | valencia   |   2 |
> | pear   | bartlett   |   1 |
> | pear   | bradford   |   2 |
> +--------+------------+-----+
>
> It is not very efficient on large data sets, though.  What about a
> stored procedure, or a UDF (a C UDF, not a SQL stored function)?  Can
> you use either of those?
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:
> http://lists.mysql.com/[EMAIL PROTECTED]
>
>


-- 
I'm a mysql DBA in china.
More about me just visit here:
http://yueliangdao0608.cublog.cn

Reply via email to