У меня есть две таблицы (с полями):
articles : id,title,description
content_tags : content_type_id, object_id ,tag_id
content_type = https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
В основном content_type_id
это что-то вроде ID таблицы ... И object_id
это ROW ID (в этой таблице) ..
И так (content_type_id + object_id
) однозначно идентифицирует строку .. !!
Теперь каждая статья связана с любым content_type
, используя теги .. !!
Итак Статьи из " Mercedez Benz " будут теми статьями, которые содержат те же теги , что и теги для "Mercedez Benz" .. !!
Итак, мой вопрос:
A SQL Query to filter ARTICLES, both by `tags` AND `Content_type +
Object_id` ..??
Что-то вроде:
SELECT [article_scope] FROM (.....) WHERE tag_id in (1,2,4)
OR
SELECT [article_scope] FROM (.....)
WHERE content_type_id=[content_type_id of Cars table]
AND object_id = [id of Mercedez benz]
Я хочу запрос, подобный этому, но состоящий только из JOINS и без INTERSECT :
(SELECT jc.id FROM articles as jc ORDER BY jc.id)
INTERSECT
(SELECT distinct(object_id) FROM content_tags
WHERE content_type_id=52 AND tag_id in (
SELECT tag_id FROM content_tags
WHERE content_type_id=14
AND object_id in (2)
)
);
// Where 52 is content_type_id of Articles table
// and 14 is content_type_id of Cars table
// and 2 is RowID of Mercedez Benz