2013-03-29 52 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