4

この配列を見ると、foo6値だけが各親キーと異なることがわかります。

Array
(
    [0] => Array
        (
          [foo1] => Apple
          [foo2] => Banana
          [foo3] => Carrots
          [foo4] => Deer
          [foo5] => Feather
          [foo6] => Grapes
        )
    [1] => Array
        (
          [foo1] => Apple
          [foo2] => Banana
          [foo3] => Carrots
          [foo4] => Deer
          [foo5] => Feather
          [foo6] => Heater
        )
    [2] => Array
        (
          [foo1] => Apple
          [foo2] => Banana
          [foo3] => Carrots
          [foo4] => Deer
          [foo5] => Feather
          [foo6] => Quail Eggs
        )
)

クエリ:

SELECT
  tpp.page_master_properties_style AS foo1,
  tpp.page_master_properties_bg AS foo2,
  tpp.page_master_properties_data AS foo3,
  tpp.page_properties_style AS foo4,
  tpp.page_properties_bg AS foo5,
  tpp.page_properties_data AS foo6,
  tobj.objects_script AS foo6
FROM templates t
  INNER JOIN category tc
    ON t.category_id = tc.category_id
  INNER JOIN page_properties tpp
    ON t.templates_id = tpp.templates_id
  INNER JOIN objects tobj
    ON t.templates_id = tobj.templates_id
WHERE
  t.templates_id = ?

どこ? = 1

これはおそらく、Tableオブジェクトに次の複数のエントリがあるためですtemplates_id

+--------------+----------------+-----------------+
|  objects_id  |  templates_id  |  objects_script |
+--------------+----------------+-----------------+
|       1      |        1       |      Grapes     |
|       2      |        1       |      Heater     |
|       3      |        1       |     Quail Eggs  |
|       4      |        2       |       Milk      |
|       5      |        3       |       Lemon     |
+--------------+----------------+-----------------+

foo6たとえば、次のような結果を達成するために、単一の配列に結合できる組み込みのmySQL関数があるのではないかと思います。

Array
(
  [foo1] => Apple
  [foo2] => Banana
  [foo3] => Carrots
  [foo4] => Deer
  [foo5] => Feather
  [foo6] => Array
            (
              [0] => Grapes
              [1] => Heater
              [2] => Quail Eggs
            )
)
4

1 に答える 1

4

これは、mysqlアーセナルのgroup_concatの仕事のように見えます。

SELECT
  tpp.page_master_properties_style AS foo1,
  tpp.page_master_properties_bg AS foo2,
  tpp.page_master_properties_data AS foo3,
  tpp.page_properties_style AS foo4,
  tpp.page_properties_bg AS foo5,
  group_concat(tpp.page_properties_data) AS foo6,
  tobj.objects_script AS foo6
FROM templates t
  INNER JOIN category tc
    ON t.category_id = tc.category_id
  INNER JOIN page_properties tpp
    ON t.templates_id = tpp.templates_id
  INNER JOIN objects tobj
    ON t.templates_id = tobj.templates_id
WHERE
  t.templates_id = ?
GROUP BY
  tpp.page_master_properties_style AS foo1,
  tpp.page_master_properties_bg AS foo2,
  tpp.page_master_properties_data AS foo3,
  tpp.page_properties_style AS foo4,
  tpp.page_properties_bg AS foo5

これにより、すべての行が1つのデータ行にグループ化され、コンマで分割されます。これにより、データセットをループするときにtpp.page_properties_data簡単に配列に分解できます

于 2012-09-14T10:34:15.053 に答える