SQL запрос не выдает данных из первой табоицы

Есть две таблицы. Запрос:

SELECT p.title, p.content, i.poster FROM posts p
LEFT JOIN images i ON i.post_id = p.id
WHERE p.content LIKE '%test%' AND i.tag = 'poster'

Сам исходный код:

SELECT
        p.id,
        p.title,
        p.short,
        p.category,
        p.url,
        p.created,
        p.last_modify,
        e.see,
        e.rating,
        e.rating_num,
        u.name AS author_name,
        u.avatar,
        f.val AS poster
    FROM nex_post p
        LEFT JOIN nex_post_ex e ON e.pid = p.id
        LEFT JOIN nex_users u ON u.id = p.uid
        RIGHT JOIN nex_fields f ON f.pid = p.id AND f.plugin_id IS NULL AND f.module_id IS NULL AND f.tag = 'poster'
    WHERE (category REGEXP ? OR category REGEXP ? OR category REGEXP ?) AND p.status != 0 ORDER BY id DESC
    LIMIT 0, 10

В результате, если во второй таблице images не найдено поле, то он так же не выдает с первой таблицы результат.

Подскажите, как получить в любом случае все записи из первой таблицы?


Ответы (2 шт):

Автор решения: Zesshi

Так это же у вас же присоединение как раз по таблице img "i.post_id", т.е. он будет показывать только NULL из таблицы img, а из таблицы posts просто выведет совпадение

Чтобы все заработало поменяйте либо на p.id = i.post_id Или поменяйте LEFT JOIN на RIGHT JOIN

→ Ссылка
Автор решения: Владимир

Помог в решении следуюший код:

LEFT OUTER JOIN images
→ Ссылка