2014-10-09 5 views
0

У меня есть две таблицы-члены mysql и addclique. Таблица членов содержит сведения обо всех пользователях, а таблица addclique - это «друзья» с двумя столбцами-adder_id, которая содержит идентификатор пользователя, отправившего запрос друга, и clique_id, содержит идентификатор пользователя, принявшего запрос друга.Как отображать пользователей из двух таблиц MySQL

Пожалуйста, я пытаюсь выбрать друзей конкретного пользователя, но я затрудняюсь получить детали (фото, имя и т. Д.) Друзей из таблицы участников, потому что я не знаю, с какой точки следует присоединиться к таблице участников таблицу addclique.

$sql = "SELECT i.*, m.* FROM addclique i JOIN members m ON m.id = ******** WHERE adder_id = :id OR clique_id = :id"; 

$result= $db->query($sql, array('id' => $_SESSION['id']); 
+2

Хотите ли вы, чтобы мы сообщили вам, какое поле в вашей таблице addclique присоединиться к вашему m.id? – JNevill

+0

Укажите основные и внешние ключи. –

ответ

1

Если я понять ваш вопрос правильно, вы должны присоединиться на m.id = a.adder_id or m.id = a.clique_id. Вы можете сделать это с in:

set @id := 4; 

select * 
from members m 
    join addclique a on m.id in (a.adder_id, a.clique_id) 
where @id in (a.adder_id, a.clique_id) 
    and m.id != @id 
+0

Почему мы устанавливаем @id: = 4? – uchejava

+0

@uchejava - это просто пример для скрипки. Вы можете удалить эту строку и изменить ее на ': id'. – sgeddes

2

Запрос ниже будет выбрать все элементы, которые добавили конкретный человек, плюс все члены, которые добавили один и тот же человек.

select m.* from members m 
join addclique a on m.id = a.adder_id 
where a.clique_id = :id 

union 

select m.* from members m 
join addclique a on m.id = a.clique_id 
where a.adder_id = :id 
+0

Как связать эти инструкции с $ sql, так как у вас есть 2 оператора select? Я говорю: $ sql = "select ***** union select ****" ;? – uchejava

+0

Да, его единственный запрос – FuzzyTree

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