Не могу добавить еще одно условие строки таблицы в мой запрос SQL - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть этот запрос:

SELECT category_name, category_id, category_slug
FROM categories
WHERE EXISTS (
    SELECT 1
    FROM assigned_categories
    WHERE assigned_categories.assigned_category_id = categories.category_id
)

И я бы хотел получить значение поля 'visible' другого TABLE, называемого 'posts', поэтому оно будет выглядеть так:

SELECT ... FROM ... WHERE EXISTS ... AND WHERE 'visible' = 1 of 'ft_projetcs' TABLE

Я много чего пробовал, но думаю, что делаю что-то не так. Любая помощь?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

Ладно, разберись, это сработало:

SELECT category_name, category_id, category_slug
FROM categories

    WHERE EXISTS (
        SELECT 1, visible
        FROM assigned_categories

        JOIN posts ON assigned_categories.assigned_post_id = post_id

        WHERE assigned_categories.assigned_category_id = ft_categories.category_id AND visible = 1
    )
0 голосов
/ 13 февраля 2012

Не знаю, правильно ли я понимаю вашу проблему, но звучит так, будто вы хотите сделать внутреннее соединение?Попробуйте что-то вроде этого:

SELECT category_name, category_id, category_slug
FROM categories
inner join ft_projects on ft_projects.category_id = categories.id
WHERE EXISTS (
    SELECT 1
    FROM assigned_categories
    WHERE assigned_categories.assigned_category_id = categories.category_id
)
and ft_projects.visible = 1

Конечно, вам нужно настроить условие соединения, "on ft_projects.category_id = Categories.id" это просто пример.

Также важно:Я думаю, что то, чего вы хотите достичь с помощью своего существующего условия, также лучше решается с помощью внутреннего соединения (по крайней мере, я так полагаю, основываясь на именах ваших столбцов).

...