Контекст: У меня есть стол POST, связанный с TAGS и КАТЕГОРИЯМИ (все многие отношения). Я хочу возвращать сообщения, даже если у них нет ТЕГИ или КАТЕГОРИЙ, как в соответствующих массивах.PostgreSQL - SELECT с двумя многими многими отношениями
Пример:
- POST1 with TAG1, TAG2 and CAT1
- POST2 WITH CAT3, CAT4, CAT5
- POST3
Я хочу вернуться:
- POST1/{TAG1, TAG2}/{CAT1}
- POST2/NULL/{CAT3, CAT4, CAT5}
- POST3/NULL/NULL
Но у меня есть:
- POST1/{TAG1, TAG2}/{CAT1, NULL, NULL}
- POST2/{NULL, NULL}/{CAT3, CAT4, CAT5}
- POST3/{NULL, NULL}/{NULL, NULL, NULL}
Если скриншот не работает, часть моего кода для связи:
`FROM bmb_blog_post as post
LEFT OUTER JOIN bmb_blog_category_bmb_blog_post_rel as posts_categories ON posts_categories.post_id = post.id
LEFT OUTER JOIN bmb_blog_category as category ON category.id = posts_categories.category_id
LEFT OUTER JOIN bmb_blog_post_bmb_blog_tag_rel as posts_tags ON posts_tags.post_id = post.id
LEFT OUTER JOIN bmb_blog_tag as tag ON tag.id = posts_tags.tag_id`
PgAdmin SQL Results Screenshot
Это работает. Проблема в том, что я хотел упростить свою проблему, чтобы обратиться за помощью, и это решение не работает в полном контексте! Я поставил еще один вопрос с полной проблемой. Большое спасибо за ваш ответ! – Olivb40
@ Olivb40. , , Я очень благодарен за то, что вы задали другой вопрос, вместо того, чтобы изменить текущий вопрос и недействить этот ответ. –
Наконец-то мне удалось добиться нескольких изменений благодаря вам. Я отправлю еще один вопрос позже, чтобы спросить о помощи в оптимизации моего FullText Search с PostgreSQL. – Olivb40