Фильтрация статей по тэгам и типу содержимого.? - PullRequest
0 голосов
/ 19 марта 2012

У меня есть две таблицы (с полями):

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
...