将多个表中的多个列添加到Query MYSQL中的一列

时间:2014-11-16 18:39:26

标签: mysql

就像标题所说,我正在尝试组合查询中具有相似列的表。结果应该是我将拥有Division,Brigade,Regiment,其中团队可以填充2个表。但我在组合两个表的列时遇到问题,无法在查询中创建一列。这就是我的尝试:

SELECT d.name Division 
     , b.name Brigade
     , r.name Regiment
     , s.name Regiment
     , d.CO
     , b.FOB
     , r.Combatants 
  FROM ArmyDivision d
     , ArmyBrigade b
     , ArmyRegiment r
     , ArmySpecRegiment s 
 WHERE b.CO  = d.CO 
   AND b.FOB = r.FOB 
   AND d.CO  = s.CO

因此r.name和s.name应该在Regiment下的查询中的同一列中。我知道这是错的,这是一个很长的镜头。我尝试了不同的变种,但没有,谷歌不是很有帮助,因为它显示如何将列从一个表添加到另一个表(不是我想要的)。所以基本上,我将如何有效地做到这一点?

此外,AmrySpecRegiment中的数据没有一个旅,只是一个分区,因此我假设Brigade对于这些条目是空的。我不知道这是否与如何进行此查询有所不同,但我想也许可以让你知道。

3 个答案:

答案 0 :(得分:0)

SELECT d.name as Division, b.name as Brigade,r.name as Regiment,s.name as Regiment, d.CO, b.FOB, r.Combatants 
FROM ArmyDivision d 
INNER JOIN (ArmyBrigade b 
INNER JOIN ArmyRegiment r
ON b.FOB=r.FOB)
ON b.CO=d.CO
INNER JOIN ArmySpecRegiment s
ON d.CO = s.CO

如果需要,可以将INNER更改为LEFT

此外,要在一列中包含多个字段,请使用CONCAT。

答案 1 :(得分:0)

您是否尝试获取r.names.name列的连续结果。在这种情况下,您可以使用如下所示的CONCAT()功能。另请注意,我已将旧样式隐式连接语法更改为ANSI92样式显式连接语法。

select d.name as Division, 
b.name as Brigade,
CONCAT(r.name, ' ', s.name) as Regiment, 
d.CO, 
b.FOB, 
r.Combatants 
from ArmyDivision d 
join ArmyBrigade b on b.CO=d.CO
join ArmyRegiment r on b.FOB=r.FOB
join ArmySpecRegiment s on d.CO=s.CO; 

答案 2 :(得分:0)

您提取的两个列都是“军团”。据我所知,如果使用相同的名称,则无法执行此操作。 如果您使用“r.name as Regiment_1,s.name as Regiment_2”之类的内容,那么会将值带到两列。

当你说,你想要一列中的两列, 例如:我们可能在两列中有first_name和last_name。现在,您希望将两个列值都显示在一列中以显示整个名称

可以通过此>完成SELECT CONCAT(first_name,'',last_name)AS FullName;