Выборка данных из таблицы БД

Mar 12, 2015

Здравствуйте. Подскажите пожалуйста как осуществить вот такую задачу. Есть 3 таблицы в БД

  1. modx_shop
id|name|wh_id|active
1 | A  | 1   | 1
2 | B  | 2   | 1
  1. modx_nomenclature_goods
id|name|active
1 | G1  | 1
2 | G2  | 1
3 | G3  | 1
4 | G4  | 1
5 | G5  | 1
  1. modx_wh_products
id|wh_id|product_id|count
1 | 1   | 1        | 10
2 | 2   | 2        | 10
3 | 1   | 3        | 10
4 | 2   | 3        | 10
5 | 2   | 5        | 10
6 | 1   | 5        | 10

В результате нужно показать вот такую таблицу

Товар | A | B
G1    | 10| 0
G2    | 0 | 10
G3    | 10| 10
G4    | 0 | 0
G5    | 10| 10

Главное условие это то что склады могут добавится/убавится, так же как и номенклатура.

Мое решение свелось к тому что я получаю вот такой массив

array(
    [0] => array(
            "product" => G1,
            "data" => array(
                [0] => array(
                    "shop" => "A",
                    "count" => 10
                )
            )
        )
)

Далее с помощью foreach и еще 1го дополнительного запроса собирается таблица. На сколько это будет верно, и если есть подсказка на более лучшее решение прошу подсказать