MySQL / PHP存储多个数据点

时间:2013-01-18 20:48:20

标签: php mysql

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

我有一个带有“sales”表的MySQL数据库。此表列出了州内的所有销售(即每条记录都是特定销售),其中包含vendorname和buyerzip的字段。我希望有另一个表“卖家”,其中包括卖家名称,还包括用邮政编码定义卖家市场区域的字段 - 比如50 +邮政编码定义市场,卖家可以定义多个市场。

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

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

由于

2 个答案:

答案 0 :(得分:0)

我将在这里做出以下假设:

  1. 卖家有很多市场
  2. 市场可以跨越多个邮政编码
  3. 只有一个卖方负责市场
  4. 市场不能重叠
  5. 通向以下结构...

    销售表 卖家| buyerzip

    市场表 市场| market_zipcodes_id

    zipcodes表 market_id |邮政编码

    希望有帮助...

答案 1 :(得分:0)

表结构:

  • 销售表:ID,卖家ID,买方,码金额,金额
  • 卖方表:ID,sellerName
  • 市场表:ID,marketName
  • SellerMarketLink表:ID,卖家ID,marketID
  • MarketZipCode表:ID,marketID,zipCode

示例数据

将第一条评论中的信息编码到您的问题

市场表

1,“商店A,第一市场”
2,“商店A,第二市场”
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

查询

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

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