Php 您可以编写代码,在获取数据时对其进行后期处理。如果有500个行业?如果有5万个行业?Excel无法处理50K列。行业必须在多个列中,还是可以在一个列中分组,用字符分隔?有趣的一点。只有不到350个行业,它们需要单独列出来。因为整理和管理excel中的数据,

Php 您可以编写代码,在获取数据时对其进行后期处理。如果有500个行业?如果有5万个行业?Excel无法处理50K列。行业必须在多个列中,还是可以在一个列中分组,用字符分隔?有趣的一点。只有不到350个行业,它们需要单独列出来。因为整理和管理excel中的数据,,php,sql,join,pivot,Php,Sql,Join,Pivot,您可以编写代码,在获取数据时对其进行后期处理。如果有500个行业?如果有5万个行业?Excel无法处理50K列。行业必须在多个列中,还是可以在一个列中分组,用字符分隔?有趣的一点。只有不到350个行业,它们需要单独列出来。因为整理和管理excel中的数据,我还是把我的答案贴了出来,以供参考。我建议您编写一个PHP脚本,创建一个包含350个连接的查询;)(我认为mysql甚至不能处理那么多的连接…)如果有500个行业?如果有5万个行业?Excel无法处理50K列。行业必须在多个列中,还是可以在一个



您可以编写代码,在获取数据时对其进行后期处理。

如果有500个行业?如果有5万个行业?Excel无法处理50K列。行业必须在多个列中,还是可以在一个列中分组,用字符分隔?有趣的一点。只有不到350个行业,它们需要单独列出来。因为整理和管理excel中的数据,我还是把我的答案贴了出来,以供参考。我建议您编写一个PHP脚本,创建一个包含350个连接的查询;)(我认为mysql甚至不能处理那么多的连接…)如果有500个行业?如果有5万个行业?Excel无法处理50K列。行业必须在多个列中,还是可以在一个列中分组,用字符分隔?有趣的一点。只有不到350个行业,它们需要单独列出来。因为整理和管理excel中的数据,我还是把我的答案贴了出来,以供参考。我建议您编写一个PHP脚本,创建一个包含350个连接的查询;)(我认为mysql甚至不能处理那么多的连接…)鉴于我的计划是输出为csv格式,我认为这可能会奏效。我将需要运行一些测试。如果单独的列不是绝对的要求,那么这绝对是一种方法。请注意,您可以对行业进行排序,如
GROUP\u CONCAT(I.name ORDER BY l.name)
Pelshoff,我接受了您的回答。今天早些时候,我读到了关于组_CONCAT()的解决方案。我不喜欢逗号设置,但在excel中,我可以根据逗号分隔符分隔单元格。我现在正在编写一个php脚本,该脚本将执行逗号分隔,因此我可以直接下载到csv格式…:-)考虑到我的计划是以csv格式输出,我认为这是可行的。我将需要运行一些测试。如果单独的列不是绝对的要求,那么这绝对是一种方法。请注意,您可以对行业进行排序,如
GROUP\u CONCAT(I.name ORDER BY l.name)
Pelshoff,我接受了您的回答。今天早些时候,我读到了关于组_CONCAT()的解决方案。我不喜欢逗号设置,但在excel中,我可以根据逗号分隔符分隔单元格。我现在正在编写一个php脚本,该脚本将执行逗号分隔,因此我可以直接下载到csv格式…:-)Andromar,很好的查询。这对于我的需求来说有点复杂,但我会把它留作参考。Andromar,非常好的查询。这对我的需求来说有点复杂,但我会把它留作参考。比尔,谢谢你的详细解释。我从来没有写过这样的查询,但它确实有助于填补一些我找不到答案的空白。作为一个挑战,我将编写一个php脚本,用于根据需要将结果下载为csv格式。我在过去做过很多次,但从未使用过这样的联接表。我计划通过一个行业名称数组循环输出那个些MAX()函数,每个函数都有各自的行业名称。我猜不会有冲突,但在我尝试之前我不会知道。新年快乐!比尔,谢谢你的详细解释。我从来没有写过这样的查询,但它确实有助于填补一些我找不到答案的空白。作为一个挑战,我将编写一个php脚本,用于根据需要将结果下载为csv格式。我在过去做过很多次,但从未使用过这样的联接表。我计划通过一个行业名称数组循环输出那个些MAX()函数,每个函数都有各自的行业名称。我猜不会有冲突,但在我尝试之前我不会知道。新年快乐!
registrants
id, first name, last name, industryID

industries
id, name

registrants_industries (join table)
id, registrant_id, industry_id
registrants.id, 
registrants.first_name, 
registrants.last_name, 
industry.name-1,      
industry.name-2,  
industry.name-3,  
industry.name-4,  
industry.name-5.
354, Mike, Smith, Painting,’’,’’,Yard Care,’’
599, Joe, Jones, ‘’,’’,’General Construction’,’’,’’
select  r.id, 
,       r.first_name
,       r.last_name
,       min(case when ri.RowNr = 1 then i.name end) as [Industry-1]
,       min(case when ri.RowNr = 2 then i.name end) as [Industry-2]
,       min(case when ri.RowNr = 3 then i.name end) as [Industry-3]
,       min(case when ri.RowNr = 4 then i.name end) as [Industry-4]
,       min(case when ri.RowNr = 5 then i.name end) as [Industry-5]
from    registrants r
join    (
        select  (
                select  count(*)
                from    registrants_industries ri3
                where   ri3.registrant = r2.registrant
                        and ri3.id <= ri2.id
                ) as RowNr
        ,       *
        from    registrants_industries ri2
        ) ri
on      ri.registrant_id = r.id
join    industries i
on      i.id = ri.industry_id
group by
        r.id
,       r.first_name
,       r.last_name
SELECT
R.id, 
R.first_name, 
R.last_name, 
GROUP_CONCAT(I.name) AS industries
FROM registrants R
JOIN registrants_industries RI ON R.id = RI.registrant_id
JOIN industires I ON RI.industry_id = I.id
GROUP BY R.id
354, Mike, Smith, "Painting,Yard Care"
599, Joe, Jones, "’General Construction’"
SELECT r.id, r.first_name, r.last_name,
  MAX(CASE i.name WHEN 'Painting' THEN i.name END) AS `Painting`,
  MAX(CASE i.name WHEN 'Tiling' THEN i.name END) AS `Tiling`,
  MAX(CASE i.name WHEN 'General Construction' THEN i.name END) AS `General Construction`,
  MAX(CASE i.name WHEN 'Yard Care' THEN i.name END) AS `Yard Care`,
  MAX(CASE i.name WHEN 'Roofing' THEN i.name END) AS `Roofing`
FROM registrants r
LEFT OUTER JOIN (
  registrants_industries ri
  INNER JOIN industries i ON i.id = ri.industry_id
) ON r.id = ri.registrant_id
GROUP BY r.id;
SELECT DISTINCT name FROM industries;