MySQL - user jogok összegyűjtése
Sziasztok!
A felhasználók jogait egy összekötő táblában tárolom, ami az users és a rights táblákat köti össze, és a neve user_rights.
Az user táblában található adatok alapján megkapom az uid-t, és ezzel lekérdezem az user_rights-ból, hogy a felhasználónak milyen jogai vannak, majd a rights táblából az rid alapján kikeresem, hogy a jogok milyen kategóriákba, és a kategórián belül milyen folyamathoz tartoznak.
A lényeg, hogy a végeredményben az uid-t és a jogokat összegyűjtve szeretném megkapni.
Ez megy is nagyjából az alábbi kóddal:A kimenete valami ilyesmi:Arra lennék kíváncsi, hogy lehetséges e olyan sql-el, hogy az összes jogot összeszedjem valamilyen tömbben, vagy stringben, hogy csak egy mezőt foglaljanak el, mert nekem kicsit zavaró, hogy minden sor elején ott van az uid, meg persze majd az uid-n kívül mást is szeretnék majd még odatenni.
■ A felhasználók jogait egy összekötő táblában tárolom, ami az users és a rights táblákat köti össze, és a neve user_rights.
Az user táblában található adatok alapján megkapom az uid-t, és ezzel lekérdezem az user_rights-ból, hogy a felhasználónak milyen jogai vannak, majd a rights táblából az rid alapján kikeresem, hogy a jogok milyen kategóriákba, és a kategórián belül milyen folyamathoz tartoznak.
A lényeg, hogy a végeredményben az uid-t és a jogokat összegyűjtve szeretném megkapni.
Ez megy is nagyjából az alábbi kóddal:
SELECT user_rights.uid,user_rights.access,rights.controller,rights.action
FROM user_rights INNER JOIN rights
ON user_rights.rid=rights.rid
AND user_rights.uid IN
(SELECT uid FROM users WHERE email='cim##kukac##gmail.com' AND password='blah')
uid | controller | action | access
1 | article | write | 1
1 | article | update | 1
1 | users | read | 1
.
.
.
GROUP_CONCAT
Kösz
Ilyen lett:
Azt még egyelőre nem tisztáztam, hogy kellenek e az users tábla mezői, vagy sem. Egyelőre csak egy login tesztet írok.
(Az első átlagban 13,5 msec-et, a második meg 14,5 msec-et produkált, szóval olyan vészesen sok különbség nincs a kettő között.)