Получить результат из двух таблиц - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь получить результат из двух таблиц в одном запросе, но проблема в том, что мне нужны столбцы из обеих таблиц в моем предложении where. Пример

SELECT activity.*,
    (
      SELECT photos 
      FROM posts 
      WHERE activity.content_id = posts.record_number
    ) as p 
FROM activity 
WHERE activity.liked_post > 0 OR activity.comments > 0 OR p > 0 
ORDER BY date DESC 
LIMIT 0,10

Этот пример не работает.Я понятия не имею, как заставить этот запрос работать.Если p = 0 запись должна быть пропущена, но content_id может быть 0 или любым числом, если content_id > 0, тогда нужно проверить фотографии в таблице сообщений, если content_id = 0, мы должны пропустить.

Так photos в posts таблица имеет значение 0 или 1.

content_id в activity таблица просто такой же ID / record_number из сообщений

Возможно, немного запутанный вопрос, но не знаюкак объяснить

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Вместо того, чтобы выбрать для фотографии, используйте объединение. В вашем запросе p> 0 решается с помощью объединения. В результаты будут включены только строки с фотографиями.

Это должно вернуть ожидаемые строки:

SELECT a.*,
    p.photos
FROM activity a
LEFT JOIN posts p
    ON a.content_id = p.record_number
WHERE (a.liked_post > 0 OR a.comments > 0)
    AND (a.content_id = p.record_number AND content_id > 0)
        OR liked_post > 0)
ORDER BY date DESC 
LIMIT 0,10;

Примечание: Я присвоил псевдонимы таблицам, чтобы уменьшить количество набираемых текстов.

0 голосов
/ 16 апреля 2019

Найденное решение

SELECT a.*,
       p.photos
FROM activity a
LEFT JOIN content p ON a.content_id = p.record_number
WHERE (a.friend_with > 0
       OR a.liked_post > 0
       OR a.comments > 0)
  OR (a.content_id = p.record_number
      AND photos > 0)
ORDER BY date DESC
LIMIT 0,10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...