2013-11-23 21 views
-1

我需要創建一個SQL查詢,列出下列表。語言列表中的行作爲列名。由於MySQL多重查詢>將行存儲到列

圖像表和查詢:

enter image description here

+0

請分享你所擁有tried..It將有助於找到解決辦法...... – Daenarys

+0

這就是所謂的_pivot_。有關此主題的數百個,也許是數千個之前的問題。請搜索它們。 – Barmar

回答

0

如果如果你希望它是語言被稱爲前期

SELECT r.id, r.parent, 
     MAX(CASE WHEN n.language_id = 1 THEN n.name END) cs, 
     MAX(CASE WHEN n.language_id = 2 THEN n.name END) en 
    FROM cat_route r LEFT JOIN cat_route_name n 
    ON r.id = n.cat_route_id 
GROUP BY r.id 

這裏是SQLFiddle演示


動視你language

SET @sql = NULL; 

SELECT GROUP_CONCAT(CONCAT(
    'MAX(CASE WHEN n.language_id = ', id, ' THEN n.name END) `', short, '`')) 
    INTO @sql 
    FROM language; 

SET @sql = CONCAT(
    'SELECT r.id, r.parent, ', @sql, ' 
    FROM cat_route r LEFT JOIN cat_route_name n 
     ON r.id = n.cat_route_id 
    GROUP BY r.id'); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

定義什麼語言這裏是SQLFiddle演示