0

我是使用 PHP 和 MySql 自学成才的人。我面临一个我无法理解的问题:我有一个包含以下字段的数据库: - 日期 - 小时 - 电子邮件 - 产品 - 数量 每次客户购买产品时,我都会在数据库中记录上面列出的信息。(每个产品一条线。)。如果客户同时购买多个产品,则日期、时间和电子邮件相同。

我的愿望:如果日期、时间和电子邮件相同,并且为这三条信息购买的所有产品,我会将日期、时间和电子邮件收集在一个表格中。

我的问题如下:我使用查询:SELECT * FROM CUSTOMER GROUP BY 日期、时间、电子邮件“然后我用“while”在一个表中分发。

MySQL组正确记录“日期”、“小时”和“电子邮件”,但产品显示不一致。

这是我的代码:

$query_customer = "SELECT * FROM CLIENT GROUP BY date, hour, email";
mysql_query($query_customer) or die('Error customer table '.$query_customer.' <br/>'.mysql_error());
$result_customer=mysql_query($query_customer);

    $row_customer = '';
    $name_product = '';
    $quantity_product = '';

    while($distribution_customer = mysql_fetch_array($result_customer))
    {
    $email = '<span>'.$distribution_customer['email'].'</span>';
    $date = $distribution_customer['date'].' at '.$distribution_customer['hour'];
    $quantity_product .= '(x'.$distribution_customer['quantity'].')';
    $name_product .= '<span>'.$distribution_customers['product'].'</br> '.$quantite_produit.'</span>';

    $row_customer .= '
            <tr>
                <td>'.$date.'</td>
                <td>'.$email.'</td>
                <td>'.$name_product.'</td>
            </tr>
        ';
    }
        <table>
        <?php echo $row_customer ?>
        </table>

我想我离解决方案不远,但我找不到攻角。也许有人会帮助我看得更清楚?我应该使用“group_concat”吗?

非常感谢您的见解。

4

1 回答 1

0

您面临的问题是由于数据库中缺乏规范化。例如,如果你有一个table(不是你写的数据库)的字段"username", "password", "email", other user-related columns, "product name", "product description", "product price", other product-related columns, "quantity", "date" etc,你的数据库中会有很多冗余信息,当需要更新这些数据时你会很头疼。请注意,这是一个夸张的例子。

为了防止数据库中的信息冗余,您需要设计您的表,使它们至少为 3NF(参见http://en.wikipedia.org/wiki/Third_normal_form)。您的数据库必须包含 4 个表:

user (id, username, password, email, ...)
product (id, productName, productDescription, price, ...)
cart (id, user_id, date, totalValue, totalNumberOfItems, delivered, ...)
cart_items (id, cart_id, product_id, quantity, ...)

...并从这些表中选择一些东西是这样的:

select * from user, product, cart, cart_items where user.id=cart.user_id and product.id=cart_items.product_id and cart.id=cart_items.cart_id and cart.delivered=0 group by cart.id sort by user.username asc;

问候

于 2012-11-19T11:38:53.853 回答