Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

promenljive u mySql-u

[es] :: MySQL :: promenljive u mySql-u

[ Pregleda: 1518 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glamoc

Član broj: 125620
Poruke: 346
*.ptt.rs.



+1 Profil

icon promenljive u mySql-u01.11.2010. u 08:17 - pre 164 meseci
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.

Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: promenljive u mySql-u01.11.2010. u 09:49 - pre 164 meseci
Citat:
glamoc: Kako uopste ikada @y moze biti razlicito od cat_id kad @y upravo uzima vrednost cat_id.

Pa može kad naiđe red sa nekom drugom kategorijom, tačnije, red koji sadrži id kategorije različit od nekog prethodnog reda.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: promenljive u mySql-u01.11.2010. u 10:12 - pre 164 meseci
btw Možda ti je ovakav upit lakši za razumevanje:
Code:
SET @br:=0, @trenutni_cat_id:=0;

SELECT rezultat.forum_id, rezultat.forum_title, rezultat.cat_id, rezultat.cat_title,
   IF(@trenutni_cat_id != rezultat.cat_id, @br:=1, @br:=@br+1) AS broj_redova, 
   IF(@trenutni_cat_id != rezultat.cat_id, @trenutni_cat_id:=rezultat.cat_id, 0)
FROM (
    SELECT f.forum_id, f.forum_title, c.cat_id, c.cat_title
    FROM categories c, forums f
    WHERE f.cat_id = c.cat_id
    ORDER BY c.cat_id, f.forum_id
) AS rezultat
HAVING broj_redova <= 2

To će ti dati po dva foruma iz svake kategorije, sortirana po njihovom id-u.
 
Odgovor na temu

[es] :: MySQL :: promenljive u mySql-u

[ Pregleda: 1518 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.