2012-03-25 100 views
0

我无法从我的mysql查询中获得格式良好的结果。MySQL查询 - 获取正确的格式

这里是数据库:

customers table 
id name 
1 Tim 
2 Lauren 
3 Prada 

tanks table 
id c_id location 
1 1 Living Room 
2 2 Living Room 
3 2 Kitchen 
4 3 Bedroom 
5 3 Hallway 

fish table 
id t_id color 
1 1 red 
2 1 blue 
3 2 white 
4 2 green 
5 2 black 
6 3 red 
7 3 orange 
8 4 white 
9 4 blue 
10 5 black 

这里是我的查询:

SELECT * FROM customers 
LEFT JOIN tanks ON (tanks.c_id = customers.id) 
LEFT JOIN fish ON (fish.t_id = tanks.id) 
GROUP BY customers.id, tanks.id; 

这里是我得到的结果是:

id name id c_id location id t_id color 
1 Tim 1 1 Living Room 1 1 red 
2 Lauren 2 2 Living Room 3 2 white 
2 Lauren 3 2 Kitchen 6 3 red 
3 Prada 4 3 Bedroom 8 4 white 
3 Prada 5 3 Hallway 10 5 black 

这里是我想获得的格式为:

[0] => Array 
    (
     [customers] => Array 
     (
      [0] => Array 
      (
       [id] => 2 
       [title] => Lauren 
       [tanks] => Array 
       (
        [0] => Array 
        (
         [id] => 2 
         [location] => Living Room 
         [fish] => Array 
         (
          [0] => Array 
          (
           [id] => 3 
           [color] => white 
          ) 
          [1] => Array 
          (
           [id] => 4 
           [color] => green 
          ) 
          [2] => Array 
          (
           [id] => 5 
           [color] => black 
          ) 
         ) 
        ) 
        [1] => Array 
         (
         [id] => 3 
         [location] => Kitchen 
         [fish] => Array 
          (
          [0] => Array 
           (
           [id] => 6 
           [color] => red 
          ) 
          [1] => Array 
           (
           [id] => 7 
           [color] => orange 
          ) 
         ) 
        ) 
       ) 
      ) 
     ) 
    ) 

我能得到期望的结果从一个查询或做我需要做多个查询,然后加入他们一起在PHP?

任何帮助,将不胜感激!

+0

SQL的结果将始终是一个二维表。你不能把你的结果格式化为树。你将不得不使用PHP来做到这一点。这并不难。 – Basti 2012-03-25 22:17:57

+0

明白了 - 谢谢! – tgurske 2012-03-26 01:09:30

回答

1

你不能直接从mysql获取这个输出,因为它总是返回基于行的输出。 Bu获得结果后,可以使用桥接方法将行类型的数组转换为所需的数组。

+0

了解 - 谢谢! – tgurske 2012-03-26 01:09:09

+0

不客气。 – 2012-03-26 01:21:22