Оператор Select, который будет делать следующее

Я только учусь разбираться в sql и php. У меня есть 4 таблицы, структурированные следующим образом

+-----------+    +------------+    +---------+    +----------+
|  Project  |    | Slide      |    | Shape   |    |  Points  |
+-----------+    +------------+    +---------+    +----------+
|    id     |    |  id        |    | id      |    | id       |
+-----------+    | project_id |    | cont_id |    | shape_id |
                 +------------+    +---------+    | x        |
                                                  | y        |
                                                  +----------+

Как вы можете видеть, таблицы связаны по идентификатору вплоть до точек, что означает, что проект будет содержать несколько слайдов, содержащих несколько фигур, содержащих определенное количество точек.

У меня есть запрос SQL

SELECT slide.`id`, shape.`id`, points.`x_point`, points.`y_point` 
FROM `project`, `slide`, `shape`, `points` 
WHERE 1 = slide.`project_id` 
   AND slide.`id` = shape.`slide_id` 
   AND shape.`id` = points.`shape_id`

Я хочу получить результаты этого запроса, которые выглядят так

[0] => stdClass Object
     (
         [id] => 27
         [x] => 177
         [y] => 177
     )

 [1] => stdClass Object
     (
         [id] => 27
         [x] => 178
         [y] => 423
     )

 [2] => stdClass Object
     (
         [id] => 27
         [x] => 178
         [y] => 419
     )

 [3] => stdClass Object
     (
         [id] => 27
         [x] => 178
         [y] => 413
     )

 [4] => stdClass Object
     (
         [id] => 27
         [x] => 181
         [y] => 399
     )

 [5] => stdClass Object
     (
         [id] => 27
         [x] => 195
         [y] => 387
     )

 [6] => stdClass Object
     (
         [id] => 27
         [x] => 210
         [y] => 381
     )

 [7] => stdClass Object
     (
         [id] => 27
         [x] => 231
         [y] => 372
     )

 [8] => stdClass Object
     (
         [id] => 27
         [x] => 255
         [y] => 368
     )

 [9] => stdClass Object
     (
         [id] => 27
         [x] => 283
         [y] => 368
     )
... AND CONTINUED FOR A LONG TIME

Я хочу преобразовать этот чудовищный массив дерьма во что-то, что больше похоже на это

[9] => stdClass Object
         (
             [id] => ID OF LIKE SHAPES
             [x] => Array(ALL THE X POINTS)
             [y] => ARRAY(ALL THE Y Points)
         )

I не могу, хоть убей, понять, как преобразовать это в такой массив.

Если это невозможно сделать с помощью разработанного мной запроса, есть ли лучший запрос. Может быть, тот, кто набирает очки, затем берет и помещает их в массив точек ... Думаю, у меня только что появилась идея ...


Новая информация,

Итак, я добавил ответ на этот вопрос, Не знаю, стандартный ли это способ. Чтобы помочь найти другие ответы, если мое решение не подходит, я также добавлю сюда свой мыслительный процесс.

Для получения дополнительной информации ознакомьтесь с моим ответом ниже.

Также как ORM соотносится с моим алгоритмом ниже?

12
задан austinbv 15 April 2011 в 04:01
поделиться