2010-08-26 4 views
0

У меня есть следующие таблицы:Mysql мульти-стол/мульти-аффилированной содержание запроса

  • magazine_tags
  • news_tags
  • page_tags
  • content_tags
  • faq_tags

Все они имеют одинаковую структуру:

uid_local - id of the entity 
uid_foreign - id of the tag 

Каждый из них относится к модели в PHP.

Мне нужно получить связанный контент на основе нескольких тегов. Скажем, я просматриваю «faq» с тегами 1 и 4, мне нужно получить все теги с отметкой 1 или 4, но те, отмеченные обоими, должны быть наверху.

Мне также нужно иметь возможность различать разные объекты, поэтому я могу загрузить их с помощью соответствующей модели в PHP после запуска запроса.

Как мне построить этот запрос?

Спасибо!

ответ

1

я не могу проверить это, потому что я мобильный, но следующий должен сделать трюк:

ЗЕЬЕСТ uid_local, uid_foreign, COUNT (*) в качестве частоты ОТ faq_tags ГДЕ uid_foreign В (1,4) GROUP BY uid_local ORDER BY frequency DESC

+0

Это действительно сработало нормально, но есть ли способ расширить его, чтобы он работал на нескольких таблицах одновременно? –

+0

Вы можете попробовать присоединиться к ним или выбрать союз. PS: [ro] cand mai treci prin Bucuresti sa iesim la o bere :) [/ ro] –

+0

Я закончил с комбинацией union и concat: 'CONCAT ('Model_Class_', uid_local) как uid_local', а затем в PHP Я отключаю класс модели при обработке результата. Благодаря! –

Смежные вопросы