Добрый день, изучаю и за одно делаю парсинг для себя (тренинг).
Хочу сделать, чтоб отправлял запрос в базу, но не получается.
При добавления товара на сайт, идут запросы:
FROM s_products AS p
LEFT JOIN s_lang_products l ON l.product_id=p.id AND l.lang_id = 1
WHERE
1
AND p.url = 'nazvanie'
GROUP BY p.id
LIMIT 1
SHOW TABLES LIKE '%s_languages%'
SELECT DISTINCT
p.id,
p.url,
p.brand_id,
p.position,
p.created as created,
p.visible,
p.featured,
p.rating,
p.votes,
p.last_modify,
l.name, l.meta_title, l.meta_keywords, l.meta_description, l.annotation, l.body, l.special
FROM s_products AS p
LEFT JOIN s_lang_products l ON l.product_id=p.id AND l.lang_id = 1
WHERE
1
AND p.url = 'nazvanie'
GROUP BY p.id
LIMIT 1
INSERT INTO s_products SET id='0', name='Название', visible='1', featured=NULL, brand_id='0', url='nazvanie', meta_title='Title', meta_keywords='Keywords', meta_description='Description', annotation='', body='', rating='0', votes='0', last_modify='2018-02-20 19:20:01'
UPDATE s_products SET position=id WHERE id=2888
SELECT count(*) as count FROM s_lang_products WHERE lang_id='1' AND product_id=2888 LIMIT 1
INSERT INTO s_lang_products SET name='Название', meta_title='Title', meta_keywords='Keywords', meta_description='Description', annotation='', body='', lang_id='1', product_id='2888'
SHOW TABLES LIKE '%s_languages%'
SELECT DISTINCT
p.id,
p.url,
p.brand_id,
p.position,
p.created as created,
p.visible,
p.featured,
p.rating,
p.votes,
p.last_modify,
l.name, l.meta_title, l.meta_keywords, l.meta_description, l.annotation, l.body, l.special
FROM s_products AS p
LEFT JOIN s_lang_products l ON l.product_id=p.id AND l.lang_id = 1
WHERE 1 AND p.id = 2888 GROUP BY p.id
LIMIT 1
select category_id from s_products_categories where product_id='2888'
DELETE FROM s_products_categories WHERE product_id='2888'
update s_categories set last_modify=now() where id=24
INSERT IGNORE INTO s_products_categories SET product_id='2888', category_id='24', position=0
INSERT INTO s_variants SET id='', name='', sku='', price='', currency_id='2', compare_price='', stock=NULL, yandex='0', product_id='2888'
SELECT count(*) as count FROM s_lang_variants WHERE lang_id='1' AND variant_id=2858 LIMIT 1
INSERT INTO s_lang_variants SET name='', lang_id='1', variant_id='2858'
SELECT count(*) as count FROM s_lang_variants WHERE lang_id='2' AND variant_id=2858 LIMIT 1
INSERT INTO s_lang_variants SET name='', lang_id='2', variant_id='2858'
SELECT count(*) as count FROM s_lang_variants WHERE lang_id='3' AND variant_id=2858 LIMIT 1
INSERT INTO s_lang_variants SET name='', lang_id='3', variant_id='2858'
SHOW TABLES LIKE '%s_languages%'
SELECT
v.id,
v.product_id,
v.price,
NULLIF(v.compare_price, 0) as compare_price,
v.sku,
IFNULL(v.stock, '10') as stock,
(v.stock IS NULL) as infinity,
v.attachment,
v.currency_id,
v.yandex,
c.rate_from,
c.rate_to,
l.name
FROM s_options po
LEFT JOIN s_features f ON f.id=po.feature_id
LEFT JOIN s_lang_features l ON l.feature_id=f.id AND l.lang_id = 1
WHERE
1
AND po.product_id in('2888')
AND po.lang_id=1
ORDER BY f.position
SHOW TABLES LIKE '%s_languages%'
SELECT
f.id,
f.position,
f.in_filter,
f.yandex,
f.auto_name_id,
f.auto_value_id,
f.url,
l.name
При условии:
в таблице s_products
url - берётся от названия товара в киррилице сразу.
Название то
nazvanie.
ID - динамический.
Так же идёт и записать сразу в другую таблицу
Где ID и PRODUCT_ID должен быть одинаковый и генерируется динамический (1,2,3,4.......).
Делал на соплях как понимал, имею вот код:
INSERT INTO s_products (url,name,brand_id,meta_title,meta_keywords,meta_description)
VALUES ((SELECT MAX(product_id) FROM s_lang_products),'%Название%','0','%Название%','%Название%','%Название%')
ON DUPLICATE KEY UPDATE `url` =
(SELECT MAX(product_id) FROM s_lang_products),
`name` = '%Название%',
`brand_id` = '0',
`meta_title` = '%Название%',
`meta_keywords` = '%Название%',
`meta_description` = '%Название%';
INSERT INTO s_lang_products (lang_id,product_id,name,meta_title,meta_keywords,meta_description)
VALUES ('1',(SELECT MAX(product_id) FROM s_products),%Название%,'%Название%','%Название%','%Название%')
ON DUPLICATE KEY UPDATE `lang_id` = '1',
`product_id` = (SELECT MAX(product_id) FROM s_products),
`name` = '%Название%',
`meta_title` = '%Название%',
`meta_keywords` = '%Название%',
`meta_description` = '%Название%';
2 базы
s_lang_products
s_products
Где:
(SELECT MAX(product_id) FROM s_lang_products) - создаёт следующие число с таблицы
s_lang_products1 запрос, он добавляет всё.
А вот второй запрос не хочет
Как бы это всё соединить(( мозги лопнули уже...
Подскажите пожалуйста, как сделать так, чтоб при добавление товара через базу, товар добавлялся сразу в 2 таблицы с одинаковым (ID и PRODUCT_ID), и когда добавляется следующий товар была проверка. Если есть товар, чтоб не создавал новый.