0

我对编程和数据库比较陌生。

我有一个带有“销售”表的 MySQL 数据库。该表列出了一个州的所有销售(即每条记录都是一个特定的销售),其中包含卖家名称和买家压缩字段。我想有另一个表“卖家”,其中包括卖家名称,还包括通过邮政编码定义卖家市场区域的字段——比如 50 多个邮政编码定义一个市场,卖家可以定义多个市场。

这些市场区域将用于未来的查询:显示特定市场区域的所有销售。

我从哪里开始考虑如何存储“市场区域”数据,然后将其用于将来的查询?

谢谢

4

2 回答 2

0

表结构:

  • 销售表:ID、sellerID、buyerZipcode、amount
  • 卖家表:ID、卖家姓名
  • 市场表:ID、市场名称
  • SellerMarketLink 表:ID、sellerID、marketID
  • MarketZipCode 表:ID、marketID、邮政编码

示例数据

对问题的第一条评论中的信息进行编码

市场表

1、“A店第一市场”
2、“A店第二市场”
3、“B店市场”

市场邮编表

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

询问

每个卖家在市场上的总销售额。请注意,由于一个邮政编码可以是多个市场的一部分,因此“总销售额”中所有值的总和可能大于“销售额”表中所有“金额”值的总和。

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 回答
0

我将在这里做以下假设:

  1. 卖家有很多市场
  2. 一个市场可以跨越许多邮政编码
  3. 只有一个卖家负责一个市场
  4. 市场不能重叠

导致以下结构...

销售表卖家| 买家zip

市场表市场| market_zipcodes_id

邮政编码表market_id | 邮政编码

希望有帮助...

于 2013-01-18T20:54:10.097 回答