Вставить значения в таблицу в зависимости от id строк в другой таблице

Тема в разделе "Базы данных", создана пользователем fortuner, 3 авг 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fortuner

    fortuner Нарушитель

    Регистр.:
    26 июн 2012
    Сообщения:
    340
    Симпатии:
    304
    Ребята, помогите-спасите!

    Есть таблица, в которой прописаны значения:
    - ID строки (последовательный номер)
    - ID товара (нужно взять из другой таблицы, от первого до последнего, таблица ps_product, столбец id_product)
    - комбинация (не использую, всегда 0)
    - ID магазина (их три, поэтому для каждого товара три строки: 1, 2, 3)
    - ID группы магазина (тоже 0)
    - Количество товара (товара нет, 0)
    - Хранится на складе (нужно выставить 1)
    - Действия, если товар закончился (нужно выставить 2)

    Должен получиться такой результат:

    Код:
    INSERT INTO `ps_stock_available` (`id_stock_available`, `id_product`, `id_product_attribute`, `id_shop`, `id_shop_group`, `quantity`, `depends_on_stock`, `out_of_stock`) VALUES
    
    -- Товар 1
    (1, 1, 0, 1, 0, 0, 1, 2),
    (2, 1, 0, 2, 0, 0, 1, 2),
    (3, 1, 0, 3, 0, 0, 1, 2),
    -- Товар 2
    (4, 2, 0, 1, 0, 0, 1, 2),
    (5, 2, 0, 2, 0, 0, 1, 2),
    (6, 2, 0, 3, 0, 0, 1, 2),
    
    ...
    
    -- Товар N
    (x,   N, 0, 1, 0, 0, 1, 2),
    (x+1, N, 0, 2, 0, 0, 1, 2),
    (x+2, N, 0, 3, 0, 0, 1, 2),
    
    Как написать запрос в БД, чтобы получилось так???
    Я понимаю, что это элементарно, но в SQL я полный ламер, помогите кто чем может.

    Спасибо, это то что надо!
     
    Последнее редактирование модератором: 26 авг 2015
  2. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    Получаешь данные. И оформляешь их в запрос.
    Код:
    $sql = 'INSERT INTO ps_stock_available(
                                id_stock_available,
                                id_product,
                                id_product_attribute,
                                id_shop,
                                id_shop_group,
                                quantity,
                                depends_on_stock,
                                out_of_stock
                )
                VALUES(
                            $item[id_stock_available],
                            $item[id_product],
                            $item[id_product_attribute],
                            $item[id_shop],
                            $item[id_shop_group],
                            $item[quantity],
                            $item[depends_on_stock],
                            $item[out_of_stock])';
    $result = mysql_query($sql) or die("Ошибка: " . mysql_error());
     
  3. lisfox

    lisfox Создатель

    Регистр.:
    22 авг 2012
    Сообщения:
    10
    Симпатии:
    2
    Для вставки значений из другой таблицы можно использовать конструкцию INSERT INTO ... SELECT по такому принципу:
    Код:
    INSERT INTO `ps_stock_available` SELECT `id_product` FROM `ps_product`, 0, 1, 0, 0, 1, 2;
    Первую колонку (id_stock_available) просто сделайте auto_increment, и она заполнится последовательными id автоматически при вставке строк.
    Как вставить сразу 3 строки (1,2,3) не знаю, разве что выполнить 3 последовательных запроса, а затем отсортировать всю таблицу по id_product:
    Код:
    INSERT INTO `ps_stock_available` SELECT `id_product` FROM `ps_product`, 0, 1, 0, 0, 1, 2;
    INSERT INTO `ps_stock_available` SELECT `id_product` FROM `ps_product`, 0, 2, 0, 0, 1, 2;
    INSERT INTO `ps_stock_available` SELECT `id_product` FROM `ps_product`, 0, 3, 0, 0, 1, 2;
    ALTER TABLE `ps_stock_available` ORDER BY `id_product`;
     
    fortuner нравится это.
  4. ESLABSDEV

    ESLABSDEV Постоялец

    Регистр.:
    8 авг 2015
    Сообщения:
    54
    Симпатии:
    10
    3 таким же методом , главное чтобы у всех 3 одно поле зависимое было =)
    Может кто знает как с комбинацией 1 и 2 / 1 и 3?
     
Статус темы:
Закрыта.