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]

Reply via email to