2016-04-07 45 views
0

Birden çok sütunu (virgülle ayrılmış veya başka bir şeyle) bir sütuna birleştirmek mümkün olsaydı, bu durumu merak ettim.MySQL Birden çok sütunu bir 'geçici' sütuna birleştirin

language_id | language_iso 
    1     NL 
    2     EN 
    3     GT 
    4     EN 

(Domain)

domain_id | domain_name 
    1    example 

Ve webdomain

languagetodomain_id | languagetodomain_lang | languagetodomain_domain 
    1        1       1 
    2        2       1 
    3        4       1 
    4        3       1 

dili bağlayan başka tablo:

Yani örneğin, ben bu tabloları (dil) var Ve bunları bu sırayla al (hatırlatma olarak BİR sütun)

domain_id | domain_name | TemporaryColumn 
    1    example   {1,2,4,3} 
+2

[virgülle ayrılmış bir liste MySQL Sonuçlar] (http://stackoverflow.com/questions/662207/mysql-results-as-comma-separated-list) – lad2025

+1

'GROUP_CONCAT' iş yapacak. – lad2025

+0

http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html kullanmayı deneyin. –

cevap

2

Bu çalışması gerekir:

SELECT Domains.*, CONCAT('{',GROUP_CONCAT(languagetodomain_lang),'}') AS TemporaryColumn 
FROM Domains 
JOIN LanguageToDomain ON LanguageToDomain.languagetodomain_domain = Domains.domain_id 
GROUP BY domain_id 

fonksiyonu GROUP_CONCAT grup değerleri virgül ile ayırarak. Braketleri normal CONCAT işlevini kullanarak ekledim. domain_id'de gruplandırmanız gerekir, böylece sahip olduğunuz her alan için tüm languagetodomain_lang'u alır.

Bunu sağlamadığınız dil_domain tablosu adını tahmin ettim.

+0

Bu mesajı yalnızca 1 satırı geri alabileceğim şekilde almaya devam ediyorum. Peki bu, çoklu satır sorununu nasıl düzeltecek? – Testuser075

+0

Üzgünüm group_concat ile concat_ws karıştırdım, ilk sabit – Jester

+0

düzeltin ve gerçekten bu hatayı alacağınızı görmüyorum. şimdi neye sahip olduğunuzu görmek için güncelleyebilir misiniz? – Jester

0

dışarı Kılçıksız:

Group_Concat Eğer satırlar arasında verileri birleştirmek için izin verir.

SELECT D.Domain_Id 
    , D.Domain_Name 
    , Group_Concat(LanguageToDomain_Lang, 
     ORDER BY LanguageToDomain_ID DESC SEPARATOR ',') as TemporaryColumn 
FROM Domains D 
INNER JOIN WebDomain WD 
on D.Domain_ID = WD.LanguageToDomain_ID 
GROUP BY D.Domain_Id, D.Domain_Name