Исключить повторяющиеся даты MySQL - PullRequest
2 голосов
/ 19 мая 2011

Я создаю базу данных продуктов и пытаюсь сделать это правильно. Вот как у меня настроена база данных.

Мои таблицы продуктов - это просто описание продукта и маркетинга. Стол sku связывает skuid с продукцией. В одном продукте много скусов. Skus уникальны для каждого продукта. Три таблицы атрибутов связывают значение атрибута (то есть размер, вес, цвет и т. Д.) С идентификатором sku.

Вот результат.

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

Продукт 789 имеет отношение к 17, 24, 25, 29, 30. Строки 25, 29 и 30 - моя проблема. Вы видите, что дубликаты разрешены. Эта таблица не существует в базе данных. Он создан с использованием кода ниже. Я хочу, чтобы комбинация атрибутов была уникальной для каждого идентификатора sku. Должен ли я сделать это с помощью внешней проверки? Есть ли способ сделать это на бэкэнде? Вот код mysql, который я использую для генерации строк sku.

$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 Ответ

1 голос
/ 19 мая 2011

Ваш внутренний проверочный код должен проверять новые значения SKU, введенные пользователем по идентификатору продукта - похоже, вы используете PHP, поэтому эта процедура должна находиться там, где вы обрабатываете форму ввода SKU (add_product_sku_view.php),

Возьмите вводимые пользователем данные, запустите SQL-запрос, чтобы увидеть, возвращает ли он какие-либо существующие SKU, и уведомите пользователя, если комбинация уже существует.Только после того, как они ввели уникальные данные SKU, вы должны разрешить вставку записи в вашу таблицу SKU.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...