2016-07-05 4 views
0

У меня есть таблица таблицы для сообщений и таблица для списка друзей.MYSQL query несколько таблиц conditional sql

Posts: 
id | PosterUsername | title | info1 | info2 | etc. 

Friends: 
user | friend | blocked(boolean) 

Поэтому в основном я ищу SQL запрос, который я могу фильтровать результаты, так что активный пользователь может только просматривать сообщения, которые размещены кем-то, кто добавил их в качестве друга.

что-то вроде ..

SELECT * FROM Posts WHERE 
FROM Friends user = PosterUsername AND friend = 'activeUsername' AND BLOCKED = '0' 

Я могу придумать способ, где я в основном хранить весь список людей, которые добавили в «activeUser» как друга внутри переменной, а затем, как я проходным отображения сообщения, которые я могу проверить, и отображать только те, которые соответствуют этому условию. Но я не очень хорошо разбираюсь в командах MYSQL, я предполагаю, что есть лучший способ.

Update:

enter image description here

+0

Вопрос: друг отношение двунаправленным? Что я подразумеваю под этим, делает ли запись в таблице «Друзья» то, что оба друга находятся в отношениях, или это может означать односторонние отношения? –

+0

Попробуйте следующее: 'SELECTION * FROM Posts INNER JOIN Друзья ON (Posts.id = Friends.friend) WHERE user = 'current user' AND blocked = 0;' –

+0

@TimBiegeleisen это может быть односторонняя связь. Это может быть и то, и другое. Но цель состоит в том, чтобы показывать только сообщения для друзей плакатов. –

ответ

-4

Без написания фактического кода, так как я нахожусь на своем телефоне, вы хотите:

Select * 
from posts 
where posterid in (
    select friendid 
    from friends 
    where userid =loggedinuserid) 

Нечто подобное необходимо сделать трюк.

+2

если вы не можете написать последовательный ответ по какой-либо причине, то не делайте –

+0

Дагон, что именно непоследовательно об этом сообщении? – Jeff

2

Один из вариантов здесь будет объединяться таблицами Friends и Posts, соединяя друг пользователя с постами, написанных теми друзьями:

SELECT p.* 
FROM Friends f INNER JOIN Posts p 
    ON f.friend = p.PosterUsername 
WHERE f.user = 'current user' AND f.blocked = FALSE 
+0

Я исследую этот метод и дам вам знать, если он работает, спасибо! –

+0

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

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