Хочу в OpenCart получить список только тех товаров, у которых не прописан URL.
Напомню, что в таблице oc_url_alias URL хранится в виде значения столбца
keyword
И при этом его принадлежность к продукту определяется через столбец
query вида "product_id=20"
Собственно из-за такой особенности
query пришло на ум использовать для запроса переменную:
SELECT (@ID:= product_id),
(SELECT `keyword`
FROM `oc_url_alias`
WHERE `query` = 'product_id=(@ID)'
) AS `url`
FROM `oc_product`
Но это не дает результатов. Keyword получается NULL.
Вообще из того, что я вижу при запросах к урлам, сначала запрашивают определенное кол-во товаров, потом в цикле запрашивают УРЛ каждого товара по отдельности:
$query = "SELECT keyword FROM ". DB_PREFIX ."url_alias WHERE `query`='product_id=".$item['product_id']."'";
Но в таком случае в магазине на 100 000 товаров, необходимо сделать 100 000 запросов.
А хотелось бы, чтобы можно было сделать 1 запрос и получить список только тех товаров, где ЧПУ не задан.
Какие варианты сделать так, чтобы получить список товаров без ЧПУ одним запросом? ))
-----------------------------
Как только задал этот вопрос пришло на ум запросить все ЧПУ всех продуктов:
SELECT * FROM `oc_url_alias` WHERE `query` LIKE 'product_id=%';
Затем средствами php превратить данные столбца query в массив товаров с заполненными ЧПУ.
Затем получить массив с id всех товаров. Из этого массива удалить все товары у которых ЧПУ в порядке.
То есть, на выходе у меня будет список id товаров, у которых нет ЧПУ. Собственно это то, что я пытаюсь получить в итоге.