2013-04-09 77 views
0

我嘗試之前導出爲CSV格式,但即時通訊未能獲得正確的數據來生成數據之前生成的數據。SQL JOIN語句 - 出口

Table : products 
products_id | products_image 
    2  | a.jpg 
    1786  | b.jpg 

Table : product_description 
products_id | products_description | language_id 
    2  | BM description  |  6 
    1786  | BM description  |  6 
    1786  | CN description  |  4 
    1786  | EN description  |  1 

我試圖讓輸出是這樣的:

products_id | products_image | p_description_6 | p_description_4 | p_description_1 | 
    2  |  a.jpg  | BM description |     |     | 
    1786 |  b.jpg  | BM description | CN description | EN description | 

我當前的查詢之下,但此查詢未能產生在同一行PRODUCT_DESCRIPTION:

$select = "SELECT p.*, pd.* FROM products p LEFT JOIN product_description pd on p.products_id=pd.products_id group by p.products_id"; 
+0

可能不同'language_id'固定或可變的數量? – 2013-04-09 03:02:34

+0

language_id固定.. – rusly 2013-04-09 03:04:37

回答

1

嘗試類似,

SELECT 
    P.products_id, 
    p.products_image, 
    MAX(CASE WHEN language_id = 6 THEN products_description END) AS p_description_6, 
    MAX(CASE WHEN language_id = 4 THEN products_description END) AS p_description_4, 
    MAX(CASE WHEN language_id = 1 THEN products_description END) AS p_description_1 

FROM 
    products P 

INNER JOIN 
    product_description D ON P.products_id = D.products_id 

GROUP BY 
    P.products_id, 
    p.products_image 

SQL Fiddle

+0

如何在同一行中回顯3個product_description? – rusly 2013-04-09 03:12:24

+0

@rusly我剛剛創建了一個SQL小提琴,請檢查... – Nalaka526 2013-04-09 03:22:16

+0

感謝它的工作...輸出是真棒:D – rusly 2013-04-09 03:44:10

0

可以使用GROUP_CONCAT產生在同一行PRODUCT_DESCRIPTION:

select 
    a.products_id, 
    a.products_image, 
    group_concat(b.products_description) as descriptions, 
    group_concat(b.language_id) as lang_ids 
from products a 
left join 
    product_description b on b.products_id = a.products_id 
group by a.products_id 

SQL Fiddle Demo