Задавайте вопросы, мы ответим
Вы не зашли.
Есть 2 таблицы
Неактивен
Если я правильно вас понял, то
Неактивен
vasya написал:
Если я правильно вас понял, то
insert into oc_product_attribute (product_id, language_id) select product_id, language_id from oc_product_description where name like '%Toyota%';скопирует значения (product_id, language_id) из oc_product_description в oc_product_attribute.
Что значит "для полей attribute_id и text значения ввести самостоятельно"?
т.е полям присвоить значение самостоятельно например для attribute_id написать значение 46 а для text Цвет:
Отредактированно Petr (11.11.2012 17:22:29)
Неактивен
Если `attribute_id` и `text` одинаковые для всех строк, то это можно прописать сразу в запросе.
В противном случае не ясно что вам нужно.
Неактивен
vasya написал:
Если `attribute_id` и `text` одинаковые для всех строк, то это можно прописать сразу в запросе.
В противном случае не ясно что вам нужно.
Примерно так? Это одинаковые для всех строк если искомое слово найдено.
INSERT INTO oc_product_attribute
SELECT product_id, '36' AS attribute_id, language_id, 'Текст из головы' AS text
FROM oc_product_description WHERE name LIKE '%Toyota%'
Неактивен
И еще вопросик можно ли в запросе как не будь реализовать такую логику
Логика: Если "Toyota" то Model_id = 1
Если "Prius" то make_id = 36
Если 2001,2002,2003,2004 так до 2013 то begin_year равен тому что нашлось т.е. одному из годов перечисленных вначале
Если "-2001,-2002,-2003" то end_year равен тому что нашлось т.е. одному из годов перечисленных вначале
Что то типа такого накалякал
Неактивен
Petr написал:
И еще вопросик можно ли в запросе как не будь реализовать такую логику
Нет, нельзя.
Неактивен
vasya написал:
Petr написал:
И еще вопросик можно ли в запросе как не будь реализовать такую логику
Нет, нельзя.
Может быть хотя бы частично? без годов? или вообще нельзя сделать , в одном запросе было сразу несколько искомых слов которые вставляются в разные таблицы?
Неактивен
В разные совсем никак, в одну можно написать сложную конструкцию из if().
Например:
insert into table1 (Model_id, make_id) select if(name LIKE '%Toyota%',1,'значение по умолчанию'), if(name LIKE '%Prius%',36,'значение по умолчанию') from table2.
Но проще не изобретать велосипед, а написать несколько простых запросов.
Неактивен
vasya написал:
Но проще не изобретать велосипед, а написать несколько простых запросов.
Да если я например напишу 4 запроса вида
Неактивен
Что-о я не понимаю вашу мысль. Давайте вы приведете тестовые данные на 10 строк и объясните каким именно образом они должны копироваться.
Неактивен
Тестовые данные у меня есть много товаров в магазине у которых в названии есть Марка авто, Модель, начальный год и конечный и есть фильтр подбора по марке, для покупателей. В этом фильтре есть вот такая таблица, вы этой таблице в каждой строке записано от начала : Id товара, id марки, id модели и года. Эта запись говорит о том что товар подходит для определенного авто. В этой таблице make_id = 1; id с номером 1 это Toyota, model_id = 1; это Prius т.е. товар подходит для Toyota Prius 2007-2009
Отредактированно Petr (12.11.2012 00:30:29)
Неактивен
Т.е. вам нужно формировать запросы вида:
insert into tab1 (`product_id`,`make_id`,`model_id`,`begin_year`,`end_year`,`engine_id`)
select `product_id`, 1, 1, if(name like '%2007-%',2007,if(name like '%2008-%',2008,'некорректные данные')) `begin_year`, ... from oc_product_description where name like '%Toyota%' and name like '%Prius %' and (name like '%2007-%' or name like '%2008-%' or name like '%2009-%' or ...) and ...
Неактивен
Приведенный выше запрос будет работать если поле name содержит информацию о "Toyota Prius 2007-2009", а если в нем, например, нет данных о годах, то нет.
Неактивен