MySQL rânduri interogare Enumerate în funcție de un alt domeniu

voturi
1

Am această structură:

Tabelul 1     Tabelul 2
id_t1 id_t2
id_t2

Acum, am nevoie pentru a enumera rândurile din cadrul Table2 ci de id_t2 într-o singură interogare.

Exemplu de ieșire:

ennum id_t1 id_t2
1 1 1
2 2 1
3 3 1
1 4 2
2 5 2
4 6 1

Ceea ce duce la rândurile enumerate cu indici exclusive pentru fiecare id_t2.

Știu că trebuie să folosesc variabile (cum ar fi @ennum) și am fost în măsură să le enumăr la nivel global, dar nu am descoperit modul corect de a face acest lucru încă.

Mulțumesc anticipat.

Întrebat 20/02/2013 la 10:31
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Ok, datorită @JW. Cred că am înțeles:

Pentru ca acest lucru să lucreze în phpMyAdmin:

  1. este necesar să se stabilească variabile running1 și Precedentul1 la 0 înainte.
  2. interogarea imbricată trebuie să fie comandat de idt2 ca și în cazul în care nu nu se va actualiza în mod corect indicele de funcționare.

Rezultatul este:

SET @running1:=0;
SET @previous1:=0;
SELECT  g.ennum, 
    g.id_t1,
    g.id_t2
FROM 
    (
        SELECT  t.id_t1,
                t.id_t2,
                @running1:=if(@previous1=concat(t.id_t2),@running1,0) + 1 as ennum  ,
                @previous1:=concat(t.id_t2) 
        FROM TableName t
        ORDER BY id_t2
    ) AS g
ORDER BY id_t2, ennum
Publicat 20/02/2013 la 21:01
sursa de către utilizator

voturi
0

da acest lucru un try,

SELECT  g.ennum, 
        g.id_t1,
        g.id_t2
FROM 
    (
        SELECT  t.id_t1,
                t.id_t2,
                @running1:=if(@previous1=concat(t.id_t2),@running1,0) + 1 as ennum  ,
                @previous1:=concat(t.id_t2) 
        FROM TableName t
     )  g
ORDER BY ID_T2, ennum
Publicat 20/02/2013 la 10:46
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more