首页 > 解决方案 > PHP & SQL - 从数据库中选择所有但按分组内容循环遍历结果

问题描述

我正在创建一个电子商务网站,我们的供应商以不同的货币为我们提供价格。我们可能有一个供应商以£-GBP 为我们提供价格,另一个以€-EUR 为我们提供价格,而其他供应商以两种货币为我们提供价格。如果他们提供两种货币的价格,那么我们的 GBP 客户将获得 GBP 价格,而我们的 EUR 客户将获得 EUR 价格。如果价格只以一种货币提供给我们,那么我们自己进行兑换。

因此,我的所有定价数据库看起来都类似于此表,如果供应商以两种货币向我们提供价格,则同一产品有两条记录:

thead{
 background-color:#bbb;
}
td{
 padding:10px;
}
<table border='1'>
<thead>
    <tr>
        <td>Supplier Type</td>
        <td>Currency</td>
        <td>Product</td>
        <td>Attribute</td>
        <td>Cost</td>
    </tr>
</thead>
<tr>
    <td>Supplier-£</td>
    <td>£</td>
    <td>Hat</td>
    <td>Red</td>
    <td>10</td>
</tr>
<tr>
    <td>Supplier-£</td>
    <td>£</td>
    <td>Hat</td>
    <td>Blue</td>
    <td>9</td>
</tr>
<tr>
    <td>Supplier-€&lt;/td>
    <td>€&lt;/td>
    <td>Shoes</td>
    <td>Large</td>
    <td>50</td>
</tr>
<tr>
    <td>Supplier-€&lt;/td>
    <td>€&lt;/td>
    <td>Shoes</td>
    <td>Small</td>
    <td>45</td>
</tr>
<tr>
    <td>Supplier-Both</td>
    <td>£</td>
    <td>Suit</td>
    <td>Large</td>
    <td>150</td>
</tr>
<tr>
    <td>Supplier-Both</td>
    <td>€&lt;/td>
    <td>Suit</td>
    <td>Large</td>
    <td>160</td>
</tr>
<tr>
    <td>Supplier-Both</td>
    <td>£</td>
    <td>Suit</td>
    <td>Small</td>
    <td>100</td>
</tr>
<tr>
    <td>Supplier-Both</td>
    <td>€&lt;/td>
    <td>Suit</td>
    <td>Small</td>
    <td>110</td>
</tr>
</table>

我正在遍历这个表,然后生成一个表格来更新它。但是,我目前的做法是为数据库中的每一行创建一行,我希望能够以一种不会仅仅因为它为同一产品创建新行的方式循环遍历它是另一种货币。相反,我想循环遍历它,以便为每个产品创建一条线,但如果该产品具有两种货币的成本,那么它应该只在一条线上创建两个输入。

标签: phpsql

解决方案


所以我会为每个产品创建行并创建一个包含货币值的下拉列表(可以添加动态)。这不是最简单的方法,但可以以消费者的方式管理数据

结构设置:示例

旧答案

您应该将表拆分为产品表和价格表。因此,您可以将所有价格加入到产品中,而无需处理关联。

Prices
-
PriceID PK int
Price float
Currency money
ProductID int FK >- Product.ProductID

Product
------------
ProductID PK int
Name varchar(200) UNIQUE

编辑:如评论中所述,表格被拆分


推荐阅读