2010-02-03 2 views
1

У меня есть таблица в моей SQL в следующей структуре называется действий:MySQL фильтр Результаты

+----+--------+------+---------+ 
| id | action | type | user_id | 
+----+--------+------+---------+ 
| 1 |  5 | 4 |  1 | 
| 2 |  6 | 4 |  1 | 
| 3 |  5 | 4 |  2 | 
| 4 |  0 | 0 |  2 | 
| 5 |  0 | 1 |  2 | 
+----+--------+------+---------+ 

и у меня есть таблица пользователей, например, так:

+----+------------+----------------------------------+----------+ 
| id | fullname | password       | username | 
+----+------------+----------------------------------+----------+ 
| 1 | Admin User | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | admin | 
| 2 | Arthur  | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | arthur | 
| 3 | john  | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | john  | 
+----+------------+----------------------------------+----------+ 

Я хочу, чтобы выбрать все действия из таблицы действий, за исключением действий администраторов, я пробовал:

SELECT * FROM actions WHERE user_id != 1; 

Но это не работает в некоторых случаях поскольку admin user_id не всегда 1.

Как я могу выбрать все действия, кроме действий администратора, я попытался объединиться с JOINS, но не могу понять это.

Надеюсь, вы знаете, что я имею в виду.

Приветствие

Eef

+0

Для того, чтобы ответить на этот вопрос, еще информация необходима. Самое главное: если у администратора не всегда есть user_id = 1, как узнать, является ли пользователь администратором. Должны ли мы использовать 'username = admin'? Как замечание: что означает 'тип'? Если в двух строках «действие» одно и то же, означает ли это, что «тип» - то же самое? Если это так, вы можете использовать отдельную таблицу для типов действий. – Martijn

+0

Администратор всегда присутствует в системе, так как пользователь по умолчанию создается в процессе установки. – RailsSon

ответ

2
SELECT * FROM actions inner join users 
on actions.user_id = users.id 
WHERE users.username != "admin"; 

предполагая, что все админы имеют имя пользователя "администратор"

Смежные вопросы