选择每个K2项目的所有类别

时间:2014-01-08 15:39:43

标签: php mysql sql joomla

我在查询Joomla K2文章管理器数据库表时遇到问题。我希望能够选择与各自类别相关联的所有项目。我的大部分查询完成如下:

$query->clear()
   ->select('i.id, i.title as name, c.name as cat, i.published')
   ->from('#__k2_items AS i')
   ->join('LEFT', '#__k2_categories AS c ON c.id = i.catid')
   ->where('i.published > 0')
   ->order('i.title, i.ordering, i.id');

这给了我想要的东西,除了它只选择与项目相关的FIRST类别。我相信这是因为在k2_items表中,catid列的类型为varchar,并且以逗号分隔。

e.g

所以说id为1的k2_item的catid值为123,124,125,上面的查询只会显示123的结果。我需要它来显示123124125的行。

任何帮助都会很棒。 感谢

1 个答案:

答案 0 :(得分:2)

SELECT i.id
     , i.title name
     , c.name cat 
  FROM k2_items i
  LEFT
  JOIN k2_categories c 
    ON FIND_IN_SET(c.id,i.catid)>0;

ID  NAME    CAT
1   item 1  Category 1
1   item 1  Category 2
2   item 2  Category 1
2   item 2  Category 2
2   item 2  Category 3
3   item 3  Category 2
3   item 3  Category 3

http://sqlfiddle.com/#!2/dfc24/5