[ glamoc @ 01.11.2010. 08:17 ] @
Uprosceni model moje baze sastoji se od dve tabele Code: CREATE TABLE `categories`( `cat_id` INT AUTO_INCREMENT NOT NULL, `cat_title` VARCHAR(30) NOT NULL, PRIMARY KEY(`cat_id`) ); i Code: CREATE TABLE `forums`( `forum_id` INT AUTO_INCREMENT NOT NULL, `forum_title` VARCHAR(30) NOT NULL, `cat_id` INT, FOREIGN KEY `cat_id` REFERENCES categories(`cat_id`), PRIMARY KEY(`forum_id`) ); Ja hocu da vratim npr prvih n foruma iz svake kategorije i nasao sam neki upit koji obavlja ovo Code: SELECT cat_title, forum_title, cat_id, forum_id, @x:=CASE WHEN @y <> cat_id THEN 0 ELSE @x+1 END AS rn, @y:=cat_id FROM (SELECT c.cat_id, c.cat_title, f.forum_id, f.forum_title FROM forums as f,categories as c WHERE f.cat_id=c.cat_id) c, (SELECT @x:=-1) a, (SELECT @y:=1) b Ovo sto mi nije bas najjasnije su ove promenljive i to Code: @x:=CASE WHEN @y <> cat_id THEN 0 ELSE @x+1 END AS rn, @y:=cat_id Kako uopste ikada @y moze biti razlicito od cat_id kad @y upravo uzima vrednost cat_id. Samo da napomenem da upit koristim za nesto drugo sa puno komplikovanijim tabelama a ovde sam radi jednostavnosti uprostio stvari ali sustina je ista. |