Mam lekko złożoną relację wchodząc do aplikacji kolejowych, z którymi mam wiele problemów.

Na początek znajduje się tabela zawierająca listę ról, które mają identyfikator i priorytet. Przykładowa tabela wygląda tak

id  priority
1      5
2      4
5      3
6      2
7      1

Teraz istnieje również join_table, który lubi identyfikatory użytkowników z identyfikatorami ról, aby śledzić, który użytkownik jest przypisany, która rola. Skomplikowana część polega na tym, że użytkownik może mieć wiele ról

user_id   role_id
   3          1
   3          2
   3          7
   4          1            
   4          5
   4          6

Próbuję się z filtrami, jest filtrować Tabela Użytkownicy_Roles do 1 wpisu na użytkownika w oparciu o rolę z najniższym priorytetem. Więc co próbuję skończyć, to:

user_id   role_id
   3          7
   4          6

Powód, dla którego się skończy, wynika z faktu, że role 7 i 6 mają najniższy priorytet.

Każda pomoc byłaby bardzo mile widziana

1
deezee 17 styczeń 2020, 19:42

1 odpowiedź

Najlepsza odpowiedź

Jestem pewien, że mógłbym rozwiązać to moje ja. Zapytanie, którego używam, to:

SELECT user_id, role_id, min(roles.priority) 
FROM users_roles INNER JOIN roles 
ON users_roles.role_id = roles.id 
GROUP BY user_id
0
deezee 17 styczeń 2020, 17:09