Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odczytywanie praw dostępu bez zdublowanych rekordów, Problem z średnio skomplikowanym zapytaniem
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Chciałbym otrzymać: account_id, login, password, blocked, expired, nazwy wszystkich grup do których należy użytkownik i wszystkie role z tych poszczególnych grup (bez powtórzeń). Jak to zrobić?

Kombinuje tak ale może da się inaczej/szybciej...
  1. SELECT account_id, login, password, blocked, expired, group_name, role_name FROM accounts INNER JOIN accounts_groups USING(account_id) INNER JOIN groups_roles USING(group_id) INNER JOIN groups USING(group_id) INNER JOIN roles USING (role_id);



A tutaj gotowa struktura bazy do testów:
Cytat
Kod wycięty, poprawiony i kompletny poniżej.


Ten post edytował Jarod 18.04.2007, 19:35:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kukoc
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.04.2007
Skąd: Polska

Ostrzeżenie: (0%)
-----


wlasnie jestem na etapie tworzenia praw dostepu dla mojej zabawki, i mniej wiecej ten sam problem mi sie pojawil, troche sie uhahałem z tym ale tu masz rozwiazanie

pomogla ekipa z kanalu #php.pl


  1. SELECT accounts.account_id, login, password, blocked, expired,
  2. GROUP_CONCAT(DISTINCT group_name) AS 'grupy' , GROUP_CONCAT(DISTINCT role_name) AS 'role'
  3. FROM groups_roles, roles, accounts_groups, accounts, groups
  4.  
  5. WHERE groups_roles.role_id = roles.role_id AND groups_roles.group_id = accounts_groups.group_id AND accounts.account_id = accounts_groups.account_id AND groups.group_id = accounts_groups.group_id
  6.  
  7. GROUP BY accounts_groups.account_id


swoja droga w zrzucie tabel brakowalo ci roli13, co troszeczke mnie zmylilo (takie 15 min kombinowania)

Ten post edytował kukoc 17.04.2007, 14:32:39
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 03:34