Объедините два запроса на выборку в mysql - PullRequest
0 голосов
/ 11 марта 2020

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

Первый запрос ==>

SELECT *,all_posts.id as lid,all_posts.image as lpimage, users.image as uimage,all_posts.post_for_id as typ_id FROM all_posts LEFT JOIN users on all_posts.user_id = users.id WHERE all_posts.parent_id = 0 order by lid desc limit 5;

Этот запрос возвращает все сообщения независимо от поля "access" => Publi c, Friends, NULL

Нажмите здесь для результата

Пример данных ===== таблица всех_позиций

id    user_id     image      post_type      post_date        access
==    ========   =====      =======    =========              =====
4526     1663   undefined    image     2020-03-07 06:47:04    Public
4523     196    undefined    image     2020-03-07 06:47:04    Friends

Таблица пользователей =>

id    name    
==    ======== 
1663   test1  
196    test2   
1966   test3

Таблица друзей -

id    from_id      to_id    add_date    
==    ========      =====       =======
316    196          1966       2019-10-15

Второй запрос ==>

SELECT count(*) as isfriend from friend where (from_id=:from_id and to_id=:user_id) or (from_id=:user_id and to_id=:from_id)

Этот запрос возвращает 1 или 0, поскольку текущий пользователь является другом другого пользователя (В В моем случае я хочу проверить каждый user_id из приведенного выше результата Query1). Нажмите здесь , чтобы получить результат. Мой запрос ==>

 SELECT *,all_posts.id as lid,all_posts.image as lpimage, users.image as uimage,all_posts.post_for_id as typ_id FROM all_posts LEFT JOIN users on all_posts.user_id = users.id WHERE user.id = 1(SELECT count(*) as isfriend from friend where (from_id=:from_id and to_id=:user_id) or (from_id=:user_id and to_id=:from_id)) all_posts.parent_id = 0 order by lid desc limit 5;

Я хочу запрос, в котором я могу получить все публикации Publi c из первого запроса, а также сообщения, имеющие " Доступ "как" Друзья "И user_id является другом текущего пользователя. Это означает, что я должен соединить эти два запроса, чтобы получить это. Пожалуйста, помогите мне сделать это правильно. Thankyou.

1 Ответ

0 голосов
/ 11 марта 2020

Я думаю, что это может быть правильное направление:

SELECT *,all_posts.id as lid,all_posts.image as lpimage, users.image as uimage,all_posts.post_for_id as typ_id FROM all_posts LEFT JOIN users on all_posts.user_id = users.id WHERE all_posts.parent_id = 0 AND (all_posts.access = 'Public' OR (all_posts.access = 'Friends' AND 0 < (SELECT count(*) as isfriend from friend where (from_id=all_posts.user_id and to_id=users.id) or (from_id=users.id and to_id=all_posts.user_id))) ORDER BY lid DESC LIMIt 5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...