Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> skOMplikowane wyciągniecie danych z bazy
Apo
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Witam
Ostatnio zaczełem pisać autoryzacje dla frameworka bardzo podobną do tej którą napisał Ludvik, bo moim zdaniem lepszej nie ma (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Struktura tabel wygląda tak:

users - (id, name, password): przechowuje dane o użytkownikach
user_groups(id, uid, gid): przechowuje przynależność danego użytkownika (uid, tabela users) do danej grupy z uprawnieniami (gid, tabela groups)
roles - (id, name): nazwa pojedyńczej roli
groups - (id, name): nazwy istniejących grup
group_roles(id, rid, gid): przechowuje role (rid, tabela roles) przypisane grupą(gid, tabela groups) (tylko identifikatory)

No i teraz chciałem pobrać dane konkretnego użytkownika z bazy, hasło, nick i role.
Czyli musze pobrać hasło, nick następnie odczytać jego przynależność do danej grupy i potem odczytać wszystkie role przypisane tej grupie. Zrobiłem takie coś:

  1. SELECT users.name, users.password, roles.name
  2. FROM users, user_groups, group_roles
  3. LEFT JOIN roles ON roles.id = group_roles.rid
  4. WHERE users.id = 1 AND user_groups.uid = users.id AND group_roles.gid = user_groups.gid


Ale to nie jest poprawne bo wyskakują mi nieodpowiednie role :/ Najlepiej jak zapytanie będzie bardzo wydajne.

Pozdrawiam Apo
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Zapytanie jest prawidlowe i zwraca 1 role NewsView, tak przynajmniej zauwazylem. Przesledz jeszcze raz dane w bazie.

Co do wydajnosci do index na zlaczenie czyli to co jest w where i to co jest po ON bo narazie masz tylko klucze podstawowe.
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: 10.10.2025 - 17:13