0

私は PHP と MySql を独学で使用しています。理解できない問題に直面しています: 次のフィールドを含むデータベースがあります: - 日付 - 時間 - メール - 製品 - 数量 顧客が製品を購入するたびに、上記の情報をデータベースに記録します。(商品ごとに 1 行)。顧客が同時に複数の製品を購入した場合、日付、時刻、および電子メールは同じです。

私の願い: 日付、時刻、電子メールが同一であり、これらの 3 つの情報のために購入したすべての製品が 1 行にまとめられた表を作成したいと思います。

私の問題は次のとおりです: 私はクエリを使用します: SELECT * FROM CUSTOMER GROUP BY date, time, email "次に、"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 に答える