2012-11-30 6 views
1

J'ai besoin d'aide pour écrire un SQL mais je n'ai aucune idée dans ce cas comment. J'ai essayé beaucoup d'options différentes mais ne fonctionnait pas.Exclure les résultats dans Mysql, PAS IN

J'ai 2 tables dans ma base de données MySQL

users (id, name, lastname) 
blocked_users (id, user_id, blocked_id) 

users table 
id name lastname 
1 nick james 
2 james dean 
3 mike bendon 

blocked_users table 
id user_id  blocked_id 
1 2   1 
2 2   3 

Exemple:

Ce que je voudrais faire est afficher tous les utilisateurs dans le tableau des utilisateurs, mais exclure dans ce cas ceux qui sont bloqués par user_id Donc si je suis par exemple connecté comme Mike Bendon (id 3 dans le tableau des utilisateurs) je ne devrais pas être en mesure de james dean (id 2 dans la table des utilisateurs) parce qu'il m'a bloqué.

+0

Je renommer cette colonne à 'blocker_id'. Le 'user_id' est le bloqué. –

Répondre

3

Je ne sais pas comment exécuter ce avec php, mais je pense que ce SQL devrait faire ce que vous avez demandé:

SELECT * 
FROM users 
WHERE id NOT IN 
(SELECT user_id FROM blocked_users WHERE blocked_id = $logged_id); 

Modifier après commentaire: Désolé, j'ai mal lu le nom de colonne id. Devrait être réparé maintenant.

+0

Je reçois une erreur ici: Colonne Uknown id_utilisateur – Mensur

+0

Thanx! Maintenant, ça a bien fonctionné;) – Mensur

0

Essayez cette requête:

SELECT * 
FROM users 
WHERE id NOT IN (
     SELECT user_id 
     FROM blocked_users 
     WHERE blocked_id=$current_user_id); 
+0

Même ici que je reçois: Uknown column user_id – Mensur

Questions connexes