2010-09-08 23 views
33

İki tablo, anahtar kelime ve veri sahibim.Mysql satırları aynı sütun değerine sahip tek satırda nasıl gruplanır?

Tablo anahtar kelimeleri 2 sütun içeriyor (id, anahtar kelime), tablo verileri 3 sütuna sahiptir (id [anahtarın anahtar kelimesi.id], ad, değer).

ben bu sorguyu kullanıyorum:

SELECT k.id, d.value, d.name 
FROM keywords AS k 
INNER JOIN data as d ON k.id = d.id 

şöyle birşeyler verir: (ileride belki daha fazla) Her bir kimlik 0 ile 3 arasında değerlere sahip olabilir

1 123 name1 
1 456 name2 
2 943 name1 
3 542 name1 
3 532 name2 
3 682 name3 

.

Aynı satırdaki tüm satırları aynı satırda nasıl alabilirim?

1 123 456 
2 943 
3 542 532 682 

gibi ben değerleri sıralamak mümkün istiyorum çünkü bunu yapmak istiyor. Böyle

+2

Bu, MySQL'in yapmasını istemekten çok, uygulama tarafı yapmak için daha iyi olacağı bir dönüşüm türüdür. – Amber

+0

Yine de sadece SQL ile yapmak istiyorsanız, Amber ile katılıyorum, hmm .. Ben "concat" ve "group by" sql işlevleri için google detayı olur. –

+0

Bunu yapmak istiyorum çünkü değerleri sıralamak istiyorum, bu yüzden eğer mysql doğrudan doğruya sıralanmış olsun harika olurdu. Her bir sütunu bir php dizisinde saklamayı nasıl kolaylaştırabilirim biliyor musunuz? – jarkam

cevap

59

Kullanım GROUP_CONCAT():

SELECT k.id, GROUP_CONCAT(d.value) 
    FROM keywords AS k 
    INNER JOIN data as d ON k.id = d.id 
    GROUP BY k.id 

Ayrıca, istediğiniz gibi değerleri tam sırasını almak için ORDER BY d.name yapmanız gerekebilir. Bunun gibi:

SELECT k.id, GROUP_CONCAT(d.value ORDER BY d.name separator ' ') 
    FROM keywords AS k 
    INNER JOIN data as d ON k.id = d.id 
    GROUP BY k.id 
+0

Evet GRUP BİRLİĞİ unuttum ... – jarkam

+0

"GROUP BY k.id'" yi unuttun mu? – Amber

+0

@Jarkam, çünkü bu sorguda 'GROUP BY k.id' kullanmadınız. – shamittomar

İlgili konular