As at present, you cannot order in such a way that the scientific staff is the first, because the Oder execution sorts it in the order of the corresponding object (in your case, it is displayed in alphabetical order by role).
Now a simple solution is to build a sorting priority table with these values ββin it, assigning a numerical priority, and then sorting by priority. Let me explain, which is slightly better, because it can be misleading:
You make a second table by listing each of these roles, and in the second column, highlight these roles with the priority that they will display.
Table: Role | Priority
Scientific staff | one
Candidate Students | 2
Other | 3 (etc.)
Then you can do something like this (pseudo-MySQL):
select members.role from members inner join priority on members.role = priority.role order by priority.priority
which will give you a role field from the participant table, sorted by priority set in the priority table. Since this is an internal join, anyone without a role will not be displayed.
source share