1

この質問が示すように、私は投稿の観点からこのフォーラムに不慣れです。データの表示方法に問題があります。

したがって、3 つのテーブルがあります (必要な列のみを表示しています)。

訪問者:

center_id (where the visitor was)  |  state_id (where they came from)

センター:

center_id  |  center

状態:

state_id  |  state

ここに私が使用しているクエリがあります

SELECT states.state, visitors.center_id, visitors.state_id, centers.center, COUNT(visitors.state_id) AS totalCount 
FROM visitors 
LEFT JOIN states ON states.state_id = visitors.state_id 
LEFT JOIN centers ON centers.center_id = visitors.center_id 
WHERE visitors.vdate = <some date> AND visitors.state_id <> '0'  
GROUP BY centers.center, visitors.state_id

これにより、次の配列が生成されます。

Array
(
    [0] => Array
        (
            [state] => Connecticut
            [location_id] => 1
            [state_id] => 8
            [center] => Little River
            [totalCount] => 1
        )

    [1] => Array
        (
            [state] => California
            [location_id] => 5
            [state_id] => 6
            [center] => North Augusta
            [totalCount] => 1
        )

    [2] => Array
        (
            [state] => Colorado
            [location_id] => 5
            [state_id] => 7
            [center] => North Augusta
            [totalCount] => 2
        )
    [6] => Array
        (
            [state] => Connecticut
            [location_id] => 9
            [state_id] => 8
            [center] => Santee
            [totalCount] => 2
        )

     [7] => Array
        (
            [state] => Virginia 
            [location_id] => 9
            [state_id] => 51
            [center] => Santee
            [totalCount] => 1
        )
)

これは私が本当に欲しいものです:

Array
(
    [Little River] => Array
        (
          [0] => Array
             (
                [state] => Connecticut
                [state_id] => 8
                [totalCount] => 1
             )
        )

    [North Augusta] => Array
        (
           [0] => Array
              (
                [state] => California
                [state_id] => 6
                [totalCount] => 1
              )

           [1] => Array
              (
                [state] => Colorado
                [state_id] => 7
                [totalCount] => 2
              )
          )
      [Santee] => Array
          (
           [0] => Array
              (
                [state] => Connecticut
                [state_id] => 8
                [totalCount] => 2
              )

           [1] => Array
              (
                [state] => Virginia 
                [state_id] => 51
                [totalCount] => 1
              )
          )
)

最終的に、これを次のような表に入れます。

__________________
|State   |   Count|
-------------------
|     Santee      |
-------------------
| Georgia |   5   |
-------------------
| Alabama |   10  |
-------------------
| North Augusta   |
-------------------
| another |    7  |
-------------------

長くなって申し訳ありませんが、これが私が説明できる唯一の方法でした。

私もphpでそれを壊そうとしましたが、おそらくそこで何か間違ったことをしているでしょう。各州に中心がリストされた3列のテーブルを作成できますが、中心に続いてすべての州とその中心の数と次の中心を示す行を本当に探しています。

任意の支援をいただければ幸いです。

4

1 に答える 1

0

クエリは、2 次元 (またはそれ以下) の結果のみを返す場合があります。この結果セットを解析してツリーに変換する必要があります。

PHP では、実際には何の問題もありません。

foreach ($rawResultSet as $row) {
    $finalResult[$row['center']][] = array(
        $row['state'],
        $row['state_id'],
        $row['totalCount']

    );
}
于 2013-06-15T08:16:52.207 に答える