2013-03-29 50 views
0

行,我有一个表名订单和我所点项目中的数据看起来像下面提取特定的数据,MYSQL

Flavor Name (10ml, 0mg nic) 
Flavor Name (15ml, 12mg nic) 
Flavor Name (15ml with Flavor Boost, 12mg nic) 
Flavor Name (30ml, 24mg nic) 
Flavor Name (30ml with Flavor Boost, 24mg nic) 
这个例子中的订单表中的列名为OrderedItems

我希望能够提取下面的项目,并把它们在视图中每个都有自己的列具有 香精名称 10/15元/ 30ml等等 0/12/24毫克等等

我不是最好的写作g查询,但如果有人能指出我正确的方向,我可能能够完成它。

任何建议?我是否需要在excel或类似的东西中做到这一点?

+0

我正在使用mysql服务器 – SwampYeti

回答

0

假设您的格式将是相同的所有口味...

SELECT Substring_index(flavor, ' (', 1)      AS flavorName, 
     Substring(flavor, Locate('(', flavor) + 1, 
     (Locate('ml', flavor) + 1) - Locate('(', flavor))  AS volumne, 
     Substring(flavor, Locate(', ', flavor) + 2, 
     Locate(' nic)', flavor) - (Locate(', ', flavor) + 2)) AS dose 
FROM flavors 

结果

| FLAVORNAME | VOLUMNE | DOSE | 
-------------------------------- 
| Flavor Name | 10ml | 0mg | 
| Flavor Name | 15ml | 12mg | 
| Flavor Name | 15ml | 12mg | 
| Flavor Name | 30ml | 24mg | 
| Flavor Name | 30ml | 24mg |

See the demo

+0

完美,谢谢你的帮助! – SwampYeti

0

你想要做这样的事吗?

select orderId, 
     sum(case when flavor_name like 'Chocolate%' then 1 else 0 end) as ChocolateCnt, 
     sum(case when flavor_name like 'Vanilla%' then 1 else 0 end) as VanillaCnt, 
     sum(case when flavor_name like 'Rocky Road%' then 1 else 0 end) as RockyRoadCnt 
from orders o 
group by orderId 
+0

我不确定,这句话你基本上是说每次在视图orderId巧克力显示计数?并显示为一个数字?作为添加# – SwampYeti

+0

味道名称实际上是不同的在我的例子中,我刚刚显示味道名称,所以我没有实际列出我的产品名称 – SwampYeti

+0

我认为这是在正确的轨道上。随时在OrderedItems,我看到巧克力我想提取,然后我需要做相同的(15毫升,12毫克nic) – SwampYeti