#php #mysql #arrays #laravel
#php #mysql #массивы #laravel
Вопрос:
Имя таблицы: user_post
id user_id post
1 2 hi ths is aaaaa
2 3 hi ths is yyyyyy
Имя таблицы: user_block
id post_id user_id block_id status
1 1 2 4 1
Пожалуйста, скажите мне, что запрос select в заблокированном пользователе all posts должен скрывать мой запрос:
SELECT * FROM `user_block`
WHERE `id` NOT IN (
SELECT `post_id` FROM `user_block`
WHERE `user_id` = '{$userID}'
AND `status` = '1'
)
Но этот запрос не скрывает все сообщения заблокированного пользователя
Комментарии:
1. где
hide_post
таблица?2. я имею в виду user_block
3. Вы хотите получить все сообщения из user_post без сообщений заблокированных пользователей, не так ли?
Ответ №1:
Это:
select * from user_post
where '{$userID}' not in (
select user_id from user_block
where status = '1'
)
скроет все сообщения, если userid
имеет значение 1
внутри user_block
.
Если вы хотите, чтобы пользователь видел только свои собственные сообщения:
select * from user_post
where '{$userID}' not in (
select user_id from user_block
where status = '1'
)
and user_id = '{$userID}'
Комментарии:
1. я думаю, что левое соединение более эффективно
Ответ №2:
Попробуйте это
SELECT * FROM user_post LEFT OUTER JOIN user_block
ON user_post.user_id = user_block.user_id
WHERE user_block.user_id IS null
Очень полезный пост. Объединения, которые наглядно объясняются здесь
Комментарии:
1. Это не отвечает на вопрос