За последние 24 часа нас посетили 17318 программистов и 1193 робота. Сейчас ищут 1476 программистов ...

Выбор блога по нескольким тагам

Тема в разделе "MySQL", создана пользователем C, 1 май 2007.

  1. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Код (Text):
    1. Blog {
    2.     ID Int
    3.     ...
    4. }
    5.  
    6. blogTag {
    7.     ID Int
    8.     blogID Int
    9.     tag String
    10. }
    Допустим пользователь хочет увидеть блоги у которых есть 2 тага: tag1 и tag2.
    Тогда мы сначала ищем блоги по каждому тагу:
    Код (Text):
    1. SELECT _blogID FROM blogTags WHERE _tag='tag1'
    Код (Text):
    1. SELECT _blogID FROM blogTags WHERE _tag='tag2'
    Получаем 2 массива с блогами. Теперь надо выбрать только те блоги,
    которые есть и в первом и втором массиве. Как? :)

    Вот на псевдо SQL чё я хотел бы:

    Код (Text):
    1. SELECT * FROM blog WHERE _ID =
    2. EXTRACT_MATCH (
    3.     SELECT _blogID FROM blogTags WHERE _tag='tag1',
    4.     SELECT _blogID FROM blogTags WHERE _tag='tag2'
    5. )
     
  2. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Решил сам!!!! :) :) :)

    Код (Text):
    1. SELECT * FROM blog  WHERE
    2. (_ID in (SELECT _blogID FROM blogTags WHERE _tag='таг1')) AND
    3. (_ID in (SELECT _blogID FROM blogTags WHERE _tag='таг2'))"
    Помогло это:
    http://www.intuit.ru/department/database/cdba/5/