Я делаю запрос, чтобы вернуть все пользовательские корзины покупок, хранящиеся в таблице sb_carts. Информация о продукте, хранящаяся в sb_carts, ссылается на два ключа product_sku и school_id. Для получения уникального продукта с уникальными уровнями складских запасов и т. Д. Необходимо указать оба этих параметра.
Когда я выполняю следующий запрос, он возвращает одну строку, я ожидаю 3 строки.
Я попытался разбить внутреннее объединение на два отдельных объединения, но это все еще возвращает только 1 результат. соединение только по одному ключу дает желаемый результат, но может привести к неправильной настройке продукта. Левое объединение возвращает 3 строки, но некоторые данные отсутствуют для конкретного продукта
Вот упрощенный пример того, что я делаю
SELECT sb_carts.product_sku
FROM sb_carts
INNER JOIN sb_products ON sb_products.sku = sb_carts.product_sku
AND sb_products.school_id = sb_carts.school_id
WHERE sb_carts.order_id = 0
AND sb_carts.user_id = 2
GROUP BY sb_carts.cart_id
Полный запрос выглядит как
SELECT COUNT(DISTINCT sb_carts.cart_id) as quantity,
sb_carts.* FROM sb_carts
INNER JOIN sb_children ON sb_children.child_id = sb_carts.child_id
INNER JOIN sb_school_entities ON sb_school_entities.school_id = sb_children.school_id
INNER JOIN sb_products ON sb_products.sku = sb_carts.product_sku
AND sb_products.school_id = sb_carts.school_id LEFT JOIN sb_houses ON sb_children.house_id = sb_houses.id
LEFT JOIN sb_refund_cart ON sb_carts.cart_id = sb_refund_cart.cart_id
WHERE sb_carts.order_id = 0
AND sb_carts.user_id = 2
GROUP BY sb_carts.child_id, sb_carts.product_sku, sb_carts.school_id
ORDER BY sb_children.dob_year, sb_children.dob_month, sb_children.dob_day ASC