0

我如何在 Yii 中用 MySQL 编写这个查询?

Yii::app()->db->createCommand()
       ->select("C.[id], C.[name], C.[family], C.[mobile]
         , Stuff((
              SELECT ', ' + (contact_group.name)
        FROM contact_grouping AS CGG , contact_group
        WHERE CGG.contact = C.Id AND CGG.[group] = contact_group.id 

        FOR XML PATH(''), TYPE
         ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS [groups]")
       ->from("contact AS c")
       ->where("C.[user] = {$UID} AND C.[attr] = ".self::ATTR_NORMAL.$con)
4

1 回答 1

0

你正在寻找GROUP_CONCAT. 您的查询可能看起来像

Yii::app()->db->createCommand()
       ->select("c.id, c.name, c.family, c.mobile, 
                 (SELECT GROUP_CONCAT(g.name) 
                    FROM contact_grouping gg JOIN contact_group g
                      ON g.id = gg.`group`
                   WHERE gg.contact = c.id
                   GROUP BY gg.contact) groups")
       ->from("contact c")
       ->where("c.user = {$UID} AND c.attr = ".self::ATTR_NORMAL.$con)

未测试

于 2013-05-29T07:18:33.623 回答