Как объединить данные с помощью php - PullRequest
2 голосов
/ 27 апреля 2010

В настоящее время мои данные MySQL хранятся как показано ниже

product             | total
------------------------------------------
puma,adidas         | 100.00,125.00     
puma                | 80.00
reebok,adidas,puma  | 70.00,100.00,125.00
adidas,umbro        | 125.00,56.00      

Как объединить, разбить, объединить и суммировать это в php?

puma     485.00
adidas   350.00
reebook  70.00
umbro    56.00

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

У меня есть быстрый вопрос о вашей структуре данных: Почему, черт возьми, ваша структура данных такая ???

При этом постарайтесь нормализовать свои данные (избегайте дублирования данных), создавайте позиции, которые относятся к заказам, таблице продуктов и т. Д. *

products
--------
id
name
price


orders
------
id
created


order_items
------------
id
order_id
product_id
quantity

Теперь я могу выполнять запросы вроде , дайте мне 5 самых больших итогов в ордерах . Какой самый популярный предмет, который я продаю? Позвольте мне изменить название этого продукта, но мои данные не распадутся.

1 голос
/ 27 апреля 2010

Я не знаю, как выглядит ваш набор результатов, но логика должна быть такой же:

$combined = array();
foreach ($results as $result) {
    $productsArr = split(",", $result['product']);
    $totalsArr = split(",", $result['total']);

    // we'll assume both arrays are always the same size
    $prodCount = count($productsArr);
    for($i = 0; $i < $prodCount; $i++) {
        $combined[$productsArr[$i]] += (float)$totalsArr[$i];
    }
}
print_r($combined);
...