Потратив несколько месяцев на размышления о том, как собирать вместе таблицы «JOIN», которые имеют общие столбцы с одинаковыми именами, и выводить их в формате, который можно искать и разбивать на страницы, я придумал это решение, в результате чего он создает «столбец».с именем набора, таким как stock_levels
, и вводит значения в виде JSON, чтобы впоследствии его можно было проанализировать.
Это работает точно так, как и предполагалось, однако проблема, с которой я столкнулся, - это раздел "ГДЕ",(product
. id
= quantity
. product_id
) возвращает все элементы в quantity
с идентификатором продукта, однако, если в quantity
имеются элементы с этим идентификатором продукта, сам продуктне возвращается, так как новые продукты, введенные в систему, не имеют запасов или изображений, они не возвращаются системой.
Мой вопрос, таким образом, есть ли способ сделать это в основном (но с кодом, который работает)
WHERE ( `product`.`id` = `quantity`.`product_id` OR COUNT( `product`.`id` = `quantity`.`product_id` ) = 0 )
(т.е. вернуть товар, если в нем нет записей в количестве)
А вот код используемого запроса:
SELECT DISTINCT `product`.*,
CONCAT( '[', GROUP_CONCAT( '{', '"id":"', `quantity`.`id`, '"', ',', '"sku":"', `quantity`.`sku`, '"', ',', '"product_id":"', `quantity`.`product_id`, '"', ',', '"criteria":"', `quantity`.`criteria`, '"', ',', '"quantity":"', `quantity`.`quantity`, '"', ',', '"price":"', `quantity`.`price`, '"', '}' SEPARATOR ',' ), ']' ) as `stock_levels`,
CONCAT( '[', GROUP_CONCAT( '{', '"id":"', `product_image`.`id`, '"', ',', '"product_id":"', `product_image`.`product_id`, '"', ',', '"location":"', `product_image`.`location`, '"', ',', '"type":"', `product_image`.`type`, '"', ',', '"order":"', `product_image`.`order`, '"', '}' SEPARATOR ',' ), ']' ) as `images`
FROM (`product`, `quantity`, `product_image`)
WHERE ( `product`.`id` = `quantity`.`product_id` )
AND ( `product`.`id` = `product_image`.`product_id` )
AND `online` = 1
GROUP BY `product`.`id`
ORDER BY date_added desc