Запрос на обновление MySQL с динамическим содержимым

#mysql

#mysql — сервер #mysql

Вопрос:

В MySQL у меня есть две таблицы:

Категория

 ----------------------------------------------
| category_name      | category_code         |
----------------------------------------------
| Suit               | SU                    |
| Western            | WE                    |
----------------------------------------------
  

ПРОДУКТ

 ---------------------------------------------
| name             | Category     | code    |
---------------------------------------------
| xyz1             | Suit         |         |
| abc1             | Suit         |         |
| abc2             | Western      |         |
---------------------------------------------
  

Я хочу обновить код в ПРОДУКТЕ, так что после обновления он будет:

ПРОДУКТ

 ---------------------------------------------
| name             | Category     | code    |
---------------------------------------------
| xyz1             | Suit         | SU/0001 |
| abc1             | Suit         | SU/0002 |
| abc2             | Western      | WE/0001 |
---------------------------------------------
  

заранее спасибо

Комментарии:

1. вы хотите сделать это с помощью 1 запроса и без php или другого?

2. mysql concat, приведение типов, count() substr(x из y) — это функции, которые вам понадобятся, если вы хотите, чтобы это было ddone в sql

Ответ №1:

Честно говоря, похоже, что вам нужно реструктурировать свою базу данных. Каждая таблица должна иметь автоматически увеличивающееся поле «id». Это позволило бы полю «Категория» ссылаться на идентификатор вместо дубликата имени (на случай, если вы КОГДА-нибудь решите изменить написание или название этой категории). Даже вплоть до вашего именования — если ваше поле находится В таблице категорий, не кажется необходимым указывать «category_» перед именем поля «code» … и т. Д

Помимо этого, вы, вероятно, говорите о PHP-скрипте (или чем-то подобном) — это позволило бы вам повторять каждый элемент и отслеживать, сколько кодов костюмов вы добавили, чтобы вы могли увеличить свое поле «код» (я предполагаю, что это то, что делает 0001 0002.

На мой взгляд, это было бы что-то вроде этого (я уверен, что это могло бы быть более упорядоченным / лучше — но, надеюсь, это дает представление о том, как вы могли бы это сделать:

 $numSU = 0;
$numWE = 0;
$products = mysql_fetch_array(mysql_query("SELECT * FROM product"));
foreach($products as $p) {
    $codeQuery = mysql_query("SELECT category_code FROM category WHERE category_name='".$p['Category']."'");
    $code = mysql_result($codeQuery,0,'category_code');
    if($code == "SU") {
        $numSU  ;
        $numItems = $numSU;
    } else if($code == "WE") {
        $numWE  ;
        $numItems = $numWE;
    }
    $update = mysql_query("UPDATE product SET code='".$code."/".$numItems."'");
}