MySQL Subgrup?

1 Cevap php

Hala daha gelişmiş MySQL sorguları alışmaya, bu nedenle burada benimle ayı ediyorum ...

Ben aşağıdaki sütunları olan bir tablo (Tablo 1) var: name, source, destination, count

Ben grup name, sonra da destination ve source arasındaki eşleştirme onları subgroup benim sonuç istiyorum.

Şimdiye kadar tüm bu sorgu:

SELECT name, destination, source, COUNT(*) FROM clicks_today GROUP BY name, destination, source

Bana böyle gruplar verir:

group 1
- name 1
- destination 1
- source 1

group 2
- name 1
- destination 2
- source 2

(etc)

Gerçekten ne istiyorum bu gibi bir şeydir:

group 1
- name 1
  - destination 1
  - source 1
  - destination 2
  - source 2

group 2
- name 2
  - destination 1
  - source 1
  - destination 2
  - source 2

I mysql_fetch_assoc ile benim sonuçlar çekerek, benim sonuçları sorgulamak ve görüntülemek için PHP kullanıyorum. Ben temelde, bir dizi içinde bir dizi istiyorum.

Bu mantıklı mı? Bunu nasıl yapabilirim?

1 Cevap

Ben (yine bakınız: basmakalıp) prosedürü / imleç çeşit uygulama olmadan tam olarak bu şekilde sonuç dönmek için (non-basmakalıp) yol var sanmıyorum, bu yüzden yani, istediklerini elde etmek için PHP kullanarak salık ediyorum:

while ($row = mysql_fetch_assoc($q)) {
    $results[$row['name']][$row['destination']][] = $row['source'];
}

Bu size böyle bir şey bakacağız pürüzlü dizi verecektir:

array(
    name1 => array(
        destination1 => array(
            source1,
            source2,
            // ...
        ),
        destination2 => array(
            // ...
        ),
    ),
    name2 => array(
        // ...
    ),
    // ...
);