繁体   English   中英

如何在PHP和MySQL中将行值分成不同的列

[英]How can I separate row values into different columns in PHP and MySQL

我正在尝试创建一个查询,该查询将来自不同行的值放入不同的列中。 到目前为止,这是我提出的查询:

SELECT red.match_number AS 'Match #', red.redTeams AS 'Red Alliance', blue.blueTeams AS 'Blue Alliance', red.redScore AS 'Red Alliance Score', blue.blueScore AS 'Blue Alliance Score'
FROM(SELECT match_number, GROUP_CONCAT(team SEPARATOR ' | ') AS redTeams, score AS redScore
FROM `scout_data`
WHERE alliance_color = 'red'
GROUP BY match_number) AS red
LEFT JOIN (SELECT match_number, GROUP_CONCAT(team SEPARATOR ' | ') AS blueTeams, score AS blueScore
FROM `scout_data`
WHERE alliance_color = 'blue'
GROUP BY match_number) AS blue ON red.match_number = blue.match_number

它创建一个像这样的表:
但是我想将蓝色和红色联盟列中的数字分开,所以看起来像这样:
除非没有资格列名称。 我的表的结构如下所示:
我已将图片中的所有列限制为与查询相关的内容。

我认为您想要或指的是交叉联接或数据透视表

正如我在评论中所说的,

已回答MySql在两个表之间进行交叉联接并与另一个匹配

该答案的示例http://sqlfiddle.com/#!9/3540f/4

关于MySql的GROUP_CONCAT()的警告:

当您使用GROUP_CONCAT看到您时,我还应该提到的另一件事是,当我初次看到它时,我认为这是我需要的某些东西的神奇答案。 后来我发现它是MySql特有的。 但是更令人担忧的是,在经过艰苦的调试之后,我发现对它施加了长度限制。 简而言之, GROUP_CONCAT可能会截断您的数据。 我决定避免在我的代码中使用它。 只是以为我会警告您。

Mysql截断GROUP_CONCAT函数的连接结果

需要更多信息因为,如果您在第一张图片中有设置,那么除了这之外,这更多是一个演示问题。

http://puu.sh/jd3a7/658df8a999.png

现在,将您的演示文稿代码(php \\ html)和包含在其中的数据提供给我们,将比Sql更合适,Sql很不错,但是没有数据库设置。 真的很难看到输出结果。

基本上,结果数组的结构是什么,如何使其看起来像image1?

正如ArtisiticPhoenix所说,我认为需要更多有关如何配置数据库的信息,以便提供最准确的答案。 据我所知,所有这些数据似乎都在一个表中。 我很困惑的部分是,如果按团队ID进行分组和连接,分数将来自何处?每个团队存储的分数是否相同? 如果不是,那么返回的分数可能不正确吗?

我想我要讲的是这里似乎存在一些数据标准化问题,获得更多信息也将有助于调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM