消除重复日期MySQL

时间:2011-05-19 06:55:23

标签: mysql sql

我正在创建一个产品数据库并尝试以正确的方式进行。到目前为止,我的数据库设置如下。

我的产品表只是一个产品和营销说明。 sku表将skuid与productid联系起来。一种产品有很多skus。 Skus是每种产品都独一无二的。三个属性表将属性值(即大小,重量,颜色等)与sku id相关联。

结果如下。

http://174.121.67.116/~aware/awarebk/product_sku_view.php?code=789

产品789具有与之相关的skus 17,24,25,29,30。第25,29和30行是我的问题。您看到允许重复。该表在数据库中不存在。它是使用下面的代码创建的。我希望每个sku id的属性组合都是唯一的。我是通过前端验证做到的吗?有没有办法在后端执行此操作?这是我用来生成sku行的mysql代码。

$sidresult = mysql_query("SELECT sku.product_idproduct,
                                 sku.idsku, 
                                 amaterial.material, 
                                 amcolor.color, 
                                 atype.type
                            FROM sku sku
                 LEFT OUTER JOIN amaterial ON sku.idsku = amaterial.sku_idsku
                 LEFT OUTER JOIN amcolor ON sku.idsku = amcolor.sku_idsku
                 LEFT OUTER JOIN atype ON sku.idsku = atype.sku_idsku
                           WHERE sku.product_idproduct =$pid");

  if (mysql_num_rows($sidresult) > 0) {
      echo '
  <table border="1" cellspacing="0" cellpadding="5px">
    <tr>  
     <th>SKU ID</th>
    <th>Material</th>
    <th>Material Color</th>
    <th>Type</th>

    </tr>';
      while ($sidrow = mysql_fetch_array($sidresult)) {
          echo '<tr>';
          echo '<td>' . $sidrow['idsku'] . '</td>';
          echo '<td>' . $sidrow['material'] . '</td>';
          echo '<td>' . $sidrow['color'] . '</td>';
          echo '<td>' . $sidrow['type'] . '</td>';
          echo "</tr>";
      }
      // close table>
      echo "</table>";

同样,我的目标是确保使用skuid生成的属性行是唯一的,并且无法添加重复项。那么如何验证多个表中的重复项呢?

1 个答案:

答案 0 :(得分:1)

您的后端验证代码应检查用户针对产品ID输入的新SKU值 - 看起来您正在使用PHP,因此此例程应位于您处理SKU输入表单的位置(add_product_sku_view.php) 。

获取用户的输入,运行SQL查询以查看它是否返回任何现有SKU,并在组合已存在时通知用户。只有在他们输入了唯一的SKU详细信息后,才允许将记录插入到SKU表中。