0

私はプログラミングとデータベースに比較的慣れていません。

「sales」テーブルを持つMySQLデータベースがあります。この表には、州内のすべての売上(つまり、各レコードが特定の売上)が、sellernameとbuyerzipのフィールドとともに一覧表示されます。売り手名を含み、郵便番号で売り手の市場エリアを定義するフィールドを含む別のテーブル「売り手」が欲しいです。たとえば、50以上の郵便番号が市場を定義し、売り手は複数の市場を定義できます。

これらのマーケットエリアは、将来のクエリに使用されます。特定のマーケットエリアのすべての売上を表示します。

その「マーケットエリア」データを保存する方法を考えて、それを将来のクエリに使用するには、どこから始めればよいでしょうか。

ありがとう

4

2 に答える 2

0

ここでは、次のことを前提としています。

  1. 売り手には多くの市場があります
  2. 市場は多くの郵便番号にまたがることができます
  3. 市場を担当するのは1人の売り手だけです
  4. 市場は重複できません

次の構造につながる...

セールステーブルセラー| Buyerzip

マーケットテーブルマーケット| market_zipcodes_id

郵便番号テーブルmarket_id| 郵便番号

お役に立てば幸いです...

于 2013-01-18T20:54:10.097 に答える
0

テーブル構造:

  • 販売テーブル:ID、sellerID、buyerZipcode、金額
  • 売り手テーブル:ID、sellerName
  • マーケットテーブル:ID、marketName
  • SellerMarketLinkテーブル:ID、sellerID、marketID
  • MarketZipCodeテーブル:ID、marketID、zipCode

サンプルデータ

質問への最初のコメントの情報をエンコードする

マーケットテーブル

1、「ストアA、最初の市場」
2、「ストアA、2番目の市場」
3、「ストアB市場」

MarketZipCodeテーブル

1、1、1
2、1、2
...
7、1、7
8、1、8
9、2、4
10、2、5
...
14、2、9
15、2、10
16、3 1
17、3、2 18、3、3
19、3、8
20、3、9
21、3、10
22、3、11 23、3、12

クエリ

各売り手の市場での総売上高。1つの郵便番号が複数の市場の一部になる可能性があるため、「Total Sales」のすべての値の合計が、Salesテーブルのすべての「amount」値の合計よりも大きくなる可能性があることに注意してください。

select Market.marketName, Seller.sellerName, sum(Sales.amount) as "Total Sales"
from Sales join Seller join SellerMarketLink join Market join MarketZipCode
on (Sales.sellerID = Seller.ID AND Seller.ID = SellerMarketLink.sellerID 
  AND SellerMarketLink.marketID = Market.ID 
  AND Market.ID = MarketZipCode.marketID 
  AND MarketZipCode.zipCode = Sales.buyerZipCode)
group by Market.ID, Market.marketName, Seller.ID, Seller.sellerName
order by Market.marketName, Seller.sellerName
于 2013-01-18T21:39:23.437 に答える