2011-04-13 61 views
0

说我有以下MySQL的 '订单' 表:MySQL的合并列

id|car|car_qty|speakers|speakers_qty 
1 | 2 | 15 | 5 | 16 
2 | 2 | 19 | 5 | 40 

什么是查询来获取以下内容:使用UNION

product|qty 
    2 | 15 
    2 | 19 
    5 | 16 
    5 | 40 

谢谢!

+0

那请问没有说清楚。你应该解释一下。你想合并哪些列? – 2011-04-13 11:38:43

+0

沙克蒂 - 汽车和扬声器是id的产品,_qty是每个人的数量。我希望看到详细的产品和他们的数量。对不起,如果我不清楚。 – Israel 2011-04-13 11:44:09

+0

在我看来,你的tabledef不合适。你为什么创建扬声器和speaker_qty而不是使用列(0或1)来告诉你一排是汽车还是扬声器?这样你就可以没有任何麻烦地附加项目(并选择它们) – Marco 2011-04-13 11:50:32

回答

1

做一个工会都来自同一个表...只是需要确保列名和数据类型是相同的......

select 
     car as product, 
     car_qty as qty 
    from 
     orders 
union all 
select 
     speakers as product, 
     speakers_qty as qty 
    from 
     orders; 
+0

对不起,我忘了提及,我正在查找一个没有联盟的查询。解决了这个问题。谢谢! – Israel 2011-04-13 11:41:49

2

试试这个:

SELECT car product,car_qty qty FROM orders 
UNION 
SELECT speakers product,speakers_qty qty FROM orders 
+0

对不起,我忘了提及,我正在查找没有联盟的查询。解决了这个问题。谢谢! – Israel 2011-04-13 11:42:35

+0

@Israel:你为什么不能使用UNION?有特别的原因吗? – Marco 2011-04-13 11:44:01

+0

是的,原因是最终它将是一个更复杂和动态的查询,将使用PHP生成,并且它让我明白,使用这种方法作为基础而不是多个UNION的代码更加明智。我可能是错的:) – Israel 2011-04-13 11:46:59