2011-10-02 2 views
1

i besoin d'aide ici,SELECT plusieurs tables

table "friends" 
+------+-------------+-----------+ 
    id | friend_id | user_id | 
+------+-------------+-----------+ 
    1 | 1222  | 99999 | 
+------+-------------+-----------+ 
    2 | 48989  | 1492 | 
+------+-------------+-----------+ 

table "users" 
+------+-------------+---------------+ 
    id | user_name | user_image | 
+------+-------------+---------------+ 
99999 |  Mark | img/abc.jpg | 
+------+-------------+---------------+ 
1222 |  Tom  | img/xyz.jpg | 
+------+-------------+---------------+ 
etc. | etc.  |  etc.. | 
+------+-------------+---------------+ 

je veux des amis de table SELECT et faire instruction WHERE:

etc ... Où user_id = $ _ SESSION [user_id] ... et affichera les données des utilisateurs de table

ok, disons: mon identifiant actuel est 99999 donc dans la table friends est seulement 1222, donc toutes les données (image, etc ..) seront affichées à partir de l'identifiant 1222 (Tom) des utilisateurs de table.

Donc, ma question ici est de savoir comment j'ai besoin d'écrire ce code pour générer des données d'utilisateurs?

* i essayer d'utiliser UNION et GAUCHE JOIN..but débutant pas luck..still ..

Répondre

4
$user_id = intval($_SESSION['user_id']); 
$friends_of_user = mysql_query(' 
SELECT 
    f.*, u.* 
FROM 
    friends f 
    LEFT JOIN 
     users u 
    ON 
     u.id = f.friend_id 
WHERE 
     f.user_id = '.$user_id); 

et d'exclure tous les utilisateurs qui ne disposent pas de profils dans le tableau des utilisateurs, il suffit de changer LEFT JOIN à JOIN

+0

@ruslyrossi, utilisation jointure interne si vous voulez éliminer les utilisateurs sans amis. – Johan

+0

@Johan: probablement incorrect. LEFT JOIN dans ce cas signifie que tous les amis qui n'ont pas de profil seront affichés comme NULL – genesis

+0

Hmm Vous auriez besoin de faire «sélectionner ce que les utilisateurs de l'intérieur vous rejoindre amis f sur ....» dans ma tête c'est ce que vous fait. – Johan

2

j'utiliser le code suivant:

$user_id = mysql_real_escape_string($_SESSION['user_id']); 
$sql = "SELECT f.* 
     FROM users u 
     INNER JOIN friends f ON (u.user_id = f.friend_id) 
     WHERE u.user_id = '$user_id' "; 
+0

upvote pour une utilisation universelle (pour id de chaîne et int, aussi) – genesis