2013-06-29 64 views
2

我假設表(對於指數的使用便利性的真實姓名)
表:PRODUCT_PRICE
ID:|產品| valuta |位置|價格
----------------------------------------------- -------------------
01 |牛奶| EUR |倫敦| 20
02 |牛奶| USD | 波士頓 | 19
03 |牛奶| JPY | 波士頓 | 180
04 |蘋果| USD | 波士頓 | 200
05 |蘋果| USD | Springfild | 210

如何得到這個數組?
笨SQL錶轉換

array(<br> 
array('id'=>01, 'product'=>milk, 'location'=>'Boston', 'price_USD'=>19, 'price_JPY'=>180),<br> 
array('id'=>02, 'product'=>apple, 'location'=>'Boston', 'price_USD'=>200)<br> 
); 
+0

爲什麼在數組id爲第一個元素是1?在數據庫中它是2.或者它不再是一個ID,而只是一個序列號? – peterm

回答

0

你的基本查詢可能看起來像

SELECT MIN(id) id, 
     MIN(location) location, 
     product, 
     MIN(CASE WHEN valuta = 'USD' THEN price END) price_usd, 
     MIN(CASE WHEN valuta = 'JPY' THEN price END) price_jpy 
    FROM product_price 
WHERE location = 'Boston' 
GROUP BY product 
ORDER BY id 

輸出:

 
| ID | LOCATION | PRODUCT | PRICE_USD | PRICE_JPY | 
--------------------------------------------------- 
| 2 | Boston | milk |  19 |  180 | 
| 4 | Boston | apple |  200 | (null) | 

這裏是SQLFiddle演示

現在我不是一個笨專家,但在codeigni ter它可能看起來

$result = $this->db 
       ->select(
       'MIN(id) id, 
       MIN(location) location, 
       product, 
       MIN(CASE WHEN valuta = 'USD' THEN price END) price_usd, 
       MIN(CASE WHEN valuta = 'JPY' THEN price END) price_jpy') 
       ->from('product_price') 
       ->where(array('location' => 'Boston') 
       ->group_by(array('product') 
       ->order_by(array('id') 
       ->get(); 
+0

謝謝!所有的作品! – VRetlev

+0

不客氣。祝你好運 :) – peterm