2016-04-06 28 views
0

Yani, ad zaten nasıl yazıyor ya da söylemiyor, çünkü gerçekten sorunumu nasıl anlatacağımı bilmiyordum. aşağıdaki şeyi elde et.MySql-Query Sütununu yalnızca bir kez PHP'de bir satır olarak alın (birkaç sonuç olsa bile)

**CEO** 
Kevin 

**Developer** 
Sarah 
Daniel 

**Marketing** 
Michael 
Tom 

i pozisyon gerektiği anlamına gelir:

id | name  | position 
1 Kevin  CEO 
2 Sarah  Developer 
3 Daniel  Developer 
4 Michael Marketing 
5 Tom  Marketing 

Şimdi ben böyle Frontend'de bilgileri göstermek gerekir:

Bana böyle bir sonuç verir MySQL-Sorgu var -Bir başlık olarak sadece bir kez toplanır ve onun altında bu pozisyon için eşleşen kişileri göstermek istiyorum. Her pozisyon için ayrı bir sorgulama yapmamın bir seçeneği yok çünkü benim tablosumda 75 tane var.

Bunu nasıl elde edebilirim ki, bir tarafta sorgu başlığımın position s değerini yalnızca bir kez bir başlık olarak alırsınız, diğer tarafta ise, bu konum için her kişinin name numarasını alabilirsiniz.

Umarım problemimi yeterince iyi açıklayabiliyordum.

+0

sağladığınız gibi bir sorgu sonucunu döndürmek istiyor musunuz? Eğer evet ise, o zaman kötü bir yaklaşımdır çünkü uygulama katmanında yapılmalıdır. – lad2025

cevap

1

Sonuçta bir kez döngü yapabilir ve yeni bir dizide konumu bir anahtar haline getirebilirsiniz.

$newArray = []; 

foreach($myQueryResult as $res){ 
    $newArray[$res['position']][] = $res['name']; 
} 

Bu, bu çıkışı ile sonuçlanır:

Array (
    "CEO" => [ "kevin" ], 
    "Developer" => [ "Sarah", "Daniel" ], 
    "Marketing" => [ "Michael", "Tom" ] 
) 
+0

Bunu denedim ve bu işi yapıyor! Çok teşekkür ederim :) Cevabınızı elimden geldiğince kabul ediyorum. –

0

kullanın bu sorgu:

SELECT `position`, GROUP_CONCAT(name SEPARATOR '<br>') as name FROM `YourTableName` GROUP BY `position`