2017-12-09 9 views
-2

私は幾分複雑なMySQLクエリを持っていますが、私は派生しようとしていますが、MySQLとPHP:購入した製品別のバイヤーレコードを選択する

私はいくつかのテーブルを持っている:products, stores, buyer, payment and buyer_purchase.

buyer_purchaseは、基本的には、外部キーで構成されています。この表は、多かれ少なかれ互いにリンクしています。テーブルには迷惑データが埋め込まれています。実際のレコード自体は、それらを取得するために使用されるメソッドほど重要ではありません。

enter image description here

私は、それらがどのように購入したその項目の多く、どの店彼らはからそれを買って、支払い方法を使用、特定の製品を購入したバイヤーを選択できるようにする必要があります。

それはすべて、次のようにPHPを使用してWebページに表示されます。

Product1 
name of buyer1 
Payment method 
Number Purchased 
Store purchased From 


product2 
Name of buyer1 
Payment 
Number Purchased 
Store Purchased from 
Name of buyer2 
Payment 

etc. 

私はやや作品のクエリを持っています。

SELECT products.item, stores.seller_name, buyer.f_name, buyer.l_name, payment.company 
FROM buyer_purchases 
    INNER JOIN products 
     ON products.id = buyer_purchases.product_listings_id 
    INNER JOIN payment 
     ON payment.id = buyer_purchases.buyer_id 
    INNER JOIN buyer 
     ON buyer.id = buyer_purchases.buyer_id 
    INNER JOIN stores 
     ON stores.id = buyer_purchases.product_listings_stores_id 
    ORDER BY products.item 

これは私が必要なすべてのデータを返します。結合されたテーブルですが、必要に応じて表示するようにフォーマットすることは、私を混乱させるものです。もちろん、誰かが購入した製品の数を表示するにはCOUNTを呼び出す必要がありますが、実装方法はわかりません。さらに、私はORDER BYではなくGROUP BYが必要だと思いますが、GROUP BYは各製品のレコードを1つだけ残します。私はMySQLが不平を言っていないサブクエリを実装することができませんでした。

今、私はすべてのデータを1つのクエリでテーブルから取り込み、それを繰り返し実行できるPHP配列として保存しようとしています。これがこのプロセスについての最良の方法ではない場合、別の方法を見つけることができます。

答えて

0

私はあなたがMySQLでもっと経験が必要だと思うのですが、そのトリックは要素をグループ化する方法です。この場合、複数のフィールドでグループ化する必要があります。

SELECT 
    products.item as product, 
    concat(buyer.f_name,' ',buyer.l_name) as buyer, 
    payment.company as payment, 
    count(products.id) as number_purchased 
    stores.seller_name as store, 
FROM buyer_purchases 
    INNER JOIN products 
     ON products.id = buyer_purchases.product_listings_id 
    INNER JOIN payment 
     ON payment.id = buyer_purchases.buyer_id 
    INNER JOIN buyer 
     ON buyer.id = buyer_purchases.buyer_id 
    INNER JOIN stores 
     ON stores.id = buyer_purchases.product_listings_stores_id 
GROUP BY buyer.id,stores.id,payment.id 
ORDER BY products.item 
0

あなたはあなたが顧客が注文した、最初の項目1のすべてのレコードを一覧表示しますORDER BY products.item, buyer.idをしたいのように、その項目2のすべてのレコードがcutomerのなど

順に見えるためにその仕事、複数 ORDER BY句を持つことができます
関連する問題