2014-04-04 15 views
0

我是mysql新手。我想在组concat()中的子查询中使用父列。如何使用mysql中的组合concat子查询中的父列?

我有以下查询。

select parenttable.id, 
parenttable.name, 
group_concat 
(
    case when parenttable.id=1 then 
    (
    select childtable.name, from c_table childtable 
    where childtable.id=parenttable.id 
    ) 

    case when parenttable.id=2 then 
    (
    select childtable.name from c_table childtable 
    where childtable.id=parenttable.id 
    ) 

    end; 

) 
from p_table parenttable 

以上查询显示“Unknown column parenttable.id”。有没有解决方案来解决它。

请帮帮我。在此先感谢...

+0

你真的有列'id'在p_table?如果从查询中删除group_concat会怎么样?它会起作用吗? – Uriil

+0

是的,它是可用的。删除组concat后它正在工作。 –

+0

你的子查询应该只返回一列。因此,根据您的需要concat childtable.id和childtable.name或删除其中之一 – Uriil

回答

0

尝试使用加入...

SELECT id,name,GROUP_CONCAT(GP_ID) FROM 
    (
     select parenttable.id, 
     parenttable.name, 
     group_concat(
      case when parenttable.id=1 then 
      concat(childtable.id,',',childtable.name) 
      when parenttable.id=2 then 
      concat(childtable.id,',',childtable.name) 
     ELSE NULL 
     end 
     ) AS GP_ID 
     from p_table parenttable LEFT OUTER JOIN 
     c_table childtable 
     ON 
     childtable.id=parenttable.id 
    GROUP BY parenttable.id 
) A 
+0

感谢您的回复。不,我不需要外部连接。我只想在组concat中使用子查询。 –

+0

尝试移动子查询中的group_concat – Gooner

+0

仍然显示相同的错误。有没有其他方法? –

相关问题