2010-02-03 8 views
1

J'ai une table dans mon SQL dans la structure suivante appelée actions:Filter MySQL résultats

+----+--------+------+---------+ 
| 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 | 
+----+--------+------+---------+ 

et j'ai la table des utilisateurs comme ceci:

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

Je veux sélectionner toutes les actions de la table d'action, sauf pour les actions des admins, je l'ai essayé de faire:

SELECT * FROM actions WHERE user_id != 1; 

Mais cela ne fonctionne pas dans certains cas Comme l'administrateur id_utilisateur n'est pas toujours 1.

Comment puis-je faire pour sélectionner toutes les actions sauf les actions d'administration, j'ai essayé de jouer avec JOINS, mais je ne peux pas le comprendre.

J'espère que vous savez ce que je veux dire.

Vive

Eef

+0

Pour répondre à cette question, un peu plus d'informations est nécessaire. Le plus important: si l'administrateur n'a pas toujours 'user_id = 1', comment savoir si un utilisateur est admin. Devrions-nous utiliser 'username = admin'? En remarque: que signifie le 'type'? Si dans deux lignes le 'action' est le même, cela signifie-t-il que' type' est le même? Si c'est le cas, vous pouvez utiliser une table distincte pour les types d'action. – Martijn

+0

Un utilisateur admin est toujours présent dans le système car il s'agit de l'utilisateur par défaut créé lors du processus d'installation. – RailsSon

Répondre

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

en supposant que tous les administrateurs ont le nom d'utilisateur "admin"