Code:
CREATE TABLE `categories`(
`cat_id` INT AUTO_INCREMENT NOT NULL,
`cat_title` VARCHAR(30) NOT NULL,
PRIMARY KEY(`cat_id`)
);
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`)
);
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
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
@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.
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka