2016-04-02 3 views
0

У меня есть 2 таблицы:Mysql многоуровневые таблицы присоединиться, чтобы получить информацию о пользователе

Table - Пользователь

userId || username || profileImage 
------------------------------------ 
1  || aa  || aaaaa.png 

2  || bb  || bbbb.png 

3  || cc  || cccc.png 

4  || dd  || dddd.png 

Таблица - Отношения

relationshipId || user1 || user2 || status 
----------------------------------------------- 
1    || 1  || 2 || 0 

2    || 1  || 3 || 1 

3    || 1  || 4 || 1 

4    || 2  || 4 || 1 

Так что я хочу подробности все пользователи (3,4), которых 1 отправил запрос и статус, принимаются как 1.

Что-то я пробовал:

$stmt = $this->db->prepare(" 
SELECT users.uId 
    , users.username 
    , users.profilePic 
    from users 
    JOIN relationship 
WHERE (relationship.user_one_Id = :profileUserId || relationship.user_two_Id=:profileUserId) 
    AND relationship.statusCode=:statusCode 
    AND users.uId != :profileUserId 
LIMIT 6 
"); 

$stmt->bindvalue(":statusCode", 1); 
$stmt->bindparam(":profileUserId", $profileUserId); 
$stmt->execute(); 

Но этот запрос дает мне строки в том числе тех, с кем я не друзья тоже. Так где же я ошибся.

+0

Что такое '$ profileUserId'? – RomanPerekhrest

+0

его идентификатор профиля, который я просматриваю .., который должен быть моим собственным профилем r любого другого пользователя в sytsem. –

+0

Обратите внимание, что LIMIT без ORDER BY не имеет смысла – Strawberry

ответ

0

Не понимаю, где картинка relationship.user_one_Id. Предполагаю, вы хотели написать relationship.user1? Я также предполагаю, что отправитель хранится в user1. В этом случае ваш запрос слишком сложный:

SELECT t.uId, t.username, t.profilePic 
FROM users t 
INNER JOIN relationship r 
    ON (t.id = r.user2 
     AND r.user1 = :profileUserId 
     AND r.status = :statusCode 
    ) 
+0

yes user1 является идентификатором пользователя, который отправляет запрос, но это не означает, что идентификатор пользователя этого пользователя может быть найден в другом столбце i.e user2, поскольку она может также получить запрос от других и быть другом. так что делает запрос сложным в целом. –

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