Простой способ запросить имена двух друзей в таблице друзей - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть таблица друзей, где хранятся идентификаторы двух друзей.Когда я спрашиваю, скажем, мои друзья, есть ли простой способ получить имена моих друзей из таблицы пользователей?Я использую PHP и MySQL, и таблицы не связаны внешним ключом, но я думаю, что могу соединить их (используя Navicat).

Мой запрос:

session_start();
if(isset($_SESSION['valid_user']))
    {
        $currentuser= $_SESSION['valid_user'];
    }


$friendships= mysql_query("SELECT * FROM friends WHERE Person1 = '$currentuser' OR Person2 = '$currentuser' ");
while($row = mysql_fetch_assoc($friendsips))
    {
        if ($row['Person1'] == $currentuser) echo $row['Person2']; // quering the users name from here is hard and long thing to do
        if ($row['Person2'] == $currentuser) echo $row['Person1'];
    }

друзей (FriendsID, Person1,Person2)

пользователей (ID, имя, фамилия)

1 Ответ

0 голосов
/ 07 апреля 2011

Предполагается, что структура таблицы:

Пользователи: ИД пользователя, имя

Друзья: идентификатор дружбы, ИД_ пользователя, ИД_ИД_2

SELECT name 
FROM Friends F JOIN Users U ON (F.userid_2 = U.userid) 
WHERE userid_1 = X

Редактировать: Если вы хотите получить обаимена, которые вы можете использовать.

SELECT 
  U1.name as name1 , U2.name as name2
FROM 
 Friends F 
 JOIN Users U1 ON (F.userid_1 = U1.userid) 
 JOIN Users U2 ON (F.userid_2 = U2.userid) 
WHERE 
 userid_1 = X

Вы можете настроить предложение where для запроса любого идентификатора пользователя.

...